2009-11-30 33 views
2

說我有這個div:如何獲得一個div的HTML,包括投入價值

<div id='myDiv'> 
    <input type='text' id='foo' size='30' /> 
</div> 

和我運行這段JavaScript代碼:

($("#foo").val('bar'); 

如果我那麼做:

alert($("#myDiv").html()); 

alert(document.getElementById('myDiv').innerHTML); 

我只得到html的原始副本,其中foo文本框的值仍爲空白。我想獲得當前的HTML副本,並在foo的html代碼中添加了value='bar'屬性。

這怎麼辦?

+0

你有什麼打算,一旦你得到它的HTML呢? – PetersenDidIt 2009-11-30 03:30:53

+0

該div是隱藏的,我會根據需要更改文本框的值,然後獲取div的html並將該html提供給iBox以使表單顯示在新的iBox中(內聯彈出) – 2009-11-30 03:35:24

回答

1

你真的想要使用jquery()。 clone()功能。這會讓你克隆#mydiv,然後在iBox中插入你的克隆。

var clone = $('#myDiv').clone(); 
$('#iBox').append(clone); 
+0

看着iBox其非常有限,沒有事件打開或關閉。是的,它的重量輕,但它可能對你正在做的事情來說重量太輕。 – PetersenDidIt 2009-11-30 03:51:16

+0

我不認爲有事件會對此有所幫助,他們會嗎? – 2009-11-30 03:55:31

+0

你將只能有一個#mydiv並將它從關閉的iBox中拉出來,而不是從dom中刪除它。 – PetersenDidIt 2009-11-30 03:57:16

0

爲什麼不在生成innerHTML之前將輸入的value屬性複製到它的屬性?請注意,這將改變您可能具有的任何重置類型按鈕的效果。

0

據我所知,你想顯示「{文本從內部的div} =酒吧」?如果是這樣的話,下面的代碼對我的作品在這兩個FF和IE瀏覽器:

<html> 
<head> 
<title>Hello</title> 
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() 
    { 
    $("#foo").val('bar'); 
    alert(($(".myDiv").text()) + ($("#foo").val())); 
    }); 
</script> 
</head> 
<body> 
<div class='myDiv'> 
    Value = <input type='text' id='foo' size='30' /> 
</div> 
</body> 
</html> 
2

你可以嘗試直接設置值PARAM,但我敢肯定,仍不會影響任何輸出。 HTML()或.innerHTML:

$('#foo').attr('value', 'foo'); 

相反,爲什麼不加它自己:

var html = $('#foo').html(); 
if (html.indexOf('value=') == -1) 
    html.replace(/^<input/, '<input value="' + $('#foo').val() + '"');