[英]IE6 and 7 can't detect dynamically added checkboxes in javascript
我的 AJAX 應用程序中有類似的內容:
<html>
<head>
<script type="text/javascript">
var counter=4;
function newcheckbox() {
var newrow=document.getElementById('tabl').insertRow(0);
var cell1=newrow.insertCell(0);
var n=document.createElement("input");
n.type="checkbox";
n.name="item";
cell1.appendChild(n);
var cell2=newrow.insertCell(1);
cell2.innerHTML=counter;
counter++;
}
function listlength() {
alert(document.list.item.length);
}
</script>
</head>
<body>
<button onclick="newcheckbox();">new checkbox</button>
<button onclick="listlength();">alert checkbox list length</button>
<form name="list">
<table id="tabl">
<tr>
<td><input type="checkbox" name="item"/></td><td>3</td>
</tr>
<tr>
<td><input type="checkbox" name="item"/></td><td>2</td>
</tr>
<tr>
<td><input type="checkbox" name="item"/></td><td>1</td>
</tr>
</form>
</body>
</html>
如您所見,如果單擊新的復選框按鈕,則會添加新的復選框。 還有另一個按鈕可以提醒復選框列表的長度。 在 Firefox 中,您會獲得更新的列表長度,但在 IE 6 和 7 中,它顯示長度仍為 3。如何在 IE 中解決此問題?
IE 不會讓您在創建元素后設置“名稱”屬性:
var n=document.createElement("<input name='item'>");
但是,如果您這樣做,它應該可以工作。
編輯- 看起來像 Firefox (從 FF4 開始,並且顯然從不在標准模式下)不喜歡這樣做,所以你必須做一些瀏覽器嗅探或功能測試才能知道它是否適用於創建具有這樣名稱的元素.
在那些版本的 IE 中創建一個輸入元素,你必須做這樣的事情:
document.createElement('<input type="checkbox" name="foo" />');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.