2014-01-21 82 views
-1

setAttribute和removeAttribute不適用於Chrome並且Firefox只能在IE中使用。setAttribute和removeAttribute在Chrome和Firefox中不起作用

下面的代碼是在IE中正常工作,不與任何其他exploerer工作

<head> 
<script type="text/javascript"> 

function showUser2() 
{ 
    buttonpassvalue1.setAttribute("disabled","disabled"); 
    buttonpassvalue.removeAttribute("disabled"); 
} 
</script> 
</head> 

    <button class="button" type="button" name="buttonpassvalue1" value="1" onclick="showUser2(this.value)">This will Disbale</button> 
    <button class="button" type="button" name="buttonpassvalue" value="-1" onclick="showUser2(this.value)">Press This</button> 

其終止時達到上面的代碼

感謝您的幫助

+3

發佈一個完整的示例。 – Blender

+0

'setAttribute'在IE8中對我來說沒有定義。 「buttonpassvalue」和「buttonpassvalue1」是什麼類型的對象? – jasonscript

+0

@Blender我改變了上面的代碼,請在IE,Chrome,Opera,Mac,Firefox中嘗試一下.....只適用於IE –

回答

0

這是一個有點複雜解釋爲什麼你的代碼在其他瀏覽器中不起作用。它與「禁用」屬性的處理方式有關,因爲有不同類型的內部節點和容器。

但是,這並不妨礙你實現你在做什麼:

if(val123 > gotnumber){ 
    buttonpassvalue1.disabled='disabled'; 
    buttonpassvalue.disabled=''; 

} else{ 
    buttonpassvalue.disabled='disabled'; 
    buttonpassvalue1.disabled=''; 
} 

的「檢查」複選框中的屬性,「只讀」,在輸入字段的工作方式相同。

編輯:

你必須給的元素的ID,以便您可以正確抓住他們:再次

var buttonpassvalue=document.getElementById('buttonpassvalue'); 
var buttonpassvalue2=document.getElementById('buttonpassvalue2'); 

編輯,與格式化和糾正代碼以禁用第一個按鈕:

<head> 
<script type="text/javascript"> 

function showUser2(v){ 

    var buttonpassvalue1=document.getElementById('buttonpassvalue1'); 
    var buttonpassvalue2=document.getElementById('buttonpassvalue1'); 


    buttonpassvalue1.disabled='disabled'; 
    buttonpassvalue.removeAttribute("disabled"); 
} 
</script> 
</head> 

    <button id="buttonpassvalue1" class="button" type="button" name="buttonpassvalue1" value="1" onclick="showUser2(this.value);">This will Disbale</button> 
    <button id="buttonpassvalue" class="button" type="button" name="buttonpassvalue" value="-1" onclick="showUser2(this.value)">Press This</button> 
+0

如果使用屬性,則應該使用值'true'和'false'。 –

+0

是的,除了readonly,checked和disabled外,它們不是合適的布爾值。人們將它們設置爲「false」是一種常見的錯誤,只是爲了發現複選框仍然被檢查。 – Schien

+0

@Schien沒有運氣...請檢查我最近的代碼有問題,並在IE和其他人中嘗試它 –

0

在符合W3C DOM規範的瀏覽器中,已禁用屬性設置是否禁用元素默認爲,它沒有設置其當前狀態。 IE不遵循該模式,並且設置禁用的屬性也設置當前狀態。

禁用 DOM屬性應被用來設置一個元件的當前狀態:

buttonpassvalue1.disabled = true; // disabled 

buttonpassvalue.disabled = false; // not disabled 

有如何HTML屬性和DOM屬性被實現瀏覽器之間的許多差異。簡單的解決方法是嘗試始終使用屬性,並只在明確需要的地方使用屬性(這很少)。

此外,您正在使用元素名稱作爲全局變量。這是一個壞主意,並且是多年前的宿醉(雖然所有瀏覽器都支持它,但不這樣做)。考慮改爲:

<script> 
function disableElement(el) { 
    el.disabled = true; 
} 
function enableElement(el) { 
    el.disabled = false; 
} 
</script> 

<form> 
    <input type="text" name="i0"><br> 
    <button onclick="disableElement(this.form.i0)">Disable the input</button> 
    <button onclick="enableElement(this.form.i0)">Enable the input</button> 
</form> 
相關問題