今天在使用document.createElement()動态建立複選框時,發現不能為其name指派,以下是測試代碼:
<html>
<head>
<title>Test</title>
</head>
<body>
<div id="testDiv"></div>
<input type="button" onclick="addInput()" value="Test0">
<input type="button" onclick="show()" value="Test1">
<script language="javascript">
function addInput(){
var div = document.getElementById("testDiv");
for(var ii = 0; ii < 5; ii++){
var check = document.createElement("input");
check.type = "checkbox";
check.id = "chk_" + ii;
check.name = "chkGroup";
div.appendChild(check);
}
alert(div.innerHTML);
}
function show(){
alert(document.getElementsByName("chkGroup").length);
</script>
</body>
</html>
其中check.name = "chkGroup"這句話并不能起到預期的作用,無論是看生成後的HTML代碼還是觀察使用document.getElementsByName()擷取的數組長度,都會發現這個name設定并沒有起作用。當然這種情況隻出現在IE6和IE7中,而在FireFox中是沒有問題的。
當然解決方法很簡單,在建立時,使用document.createElement("<input name='chkGroup'>")。不過還不知道是什麼原因?
在Name屬性的說明中有這樣一句話: