所以我正在编写一个用于更新和显示数据库表的界面,客户端显示的每一行(使用DataTables)都有一个“编辑”和“删除”按钮。每次单击单行的“编辑”时,其他行中的所有“编辑”和“删除”按钮都将被禁用。这是我用来执行此操作的Javascript代码:
var editButtons = document.getElementsByName("EditRow");
var deleteButtons = document.getElementsByName("DeleteRow");
for (i in editButtons) {
editButtons[i].disabled = true;
}
for (i in deleteButtons) {
deleteButtons[i].disabled = true;
}
这适用于Chrome和Firefox,但是当我在IE9中试用它时,它不会禁用任何内容。我已经尝试了很多东西来解决这个问题,包括使用jQuery抓取DOM对象,但没有任何工作。任何帮助表示赞赏。
答案 0 :(得分:3)
document.getElementsByName
返回node list,类似于数组。你应该这样对待它:
var elements = document.getElementsByName('something'),
len = elements.length;
for (var i = 0; i < len; i++) {
elements[i].disabled = true;
}
答案 1 :(得分:2)
您的示例在IE9中不起作用,但这样做:
Array.prototype.forEach.call(document.getElementsByName('EditRow'), function(el){
el.disabled = true;
});