2013-06-30 68 views
3

我有多個按鈕name="angka"id="angka"禁用多個HTML按鈕

<input type="button" name="angka" id="angka" value="1" style="width:15px" onclick="insert(1)"> 
<input type="button" name="angka" id="angka" value="2" style="width:15px" onclick="insert(2)"> 
<input type="button" name="angka" id="angka" value="3" style="width:15px" onclick="insert(3)"> 

onLoadPage事件中,我嘗試使用下面的代碼禁用它們。

document.getElementById("operator").disabled = true; 
document.getElementsByName("operator").disabled = true; 

但結果是隻有第一個按鈕被禁用,其他按鈕仍然被啓用。

如何使用JavaScript禁用按鈕而不使用唯一的名稱或ID?

解決

`var elements = document.getElementsByClassName("classname"); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].disabled =true; 
}` 
+5

第一個問題:您的每一個按鈕都應該有不同的ID。 – OzrenTkalcecKrznaric

+1

您的HTML無效,請使用class而不是ID。 – Red

+1

另外,你爲什麼要禁用它們onloadpage?只需在html中禁用它們即可。 – jdepypere

回答

6

正如@Red說:使用類而不是ID

<input type="button" name="angka" class="angka" value="1" style="width:15px" onclick="insert(1)"> 

之後,你應該能夠做這樣的事情:

var elems = document.getElementsByClassName("angka"); 
for(var i = 0; i < elems.length; i++) { 
    elems[i].disabled = true; 
} 

我不確定getElementsByClassName()是否爲跨瀏覽器,請注意。不過,jQuery擅長這一點,所以你可以使用它並讓你的生活變得更簡單。

編輯

的jQuery(未經測試),例如爲:

$('input.angka').attr('disabled','disabled'); 
+2

'getElementsByClassName'返回一個元素數組。您不能一次設置整個數組的屬性,您必須遍歷它並分別處理每個元素。 – JJJ

+0

@Juhana:謝謝,我更新了我的回答 – OzrenTkalcecKrznaric

+0

我的一些碎屑:''for'total'其中'var total = elems.length;'工作得更快然後計算每個循環 – vladkras