setAttribute和removeAttribute在chrome和firefox中不起作用

时间:2014-01-21 01:05:05

标签: javascript

setAttribute和removeAttribute不适用于chrome,而firefox仅适用于IE。

下面的代码在IE中工作正常,不适用于任何其他探索者

<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>

当到达上面的代码时终止

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

解释为什么您的代码在其他浏览器中不起作用有点复杂。它与“禁用”属性的处理方式有关,因为有不同类型的内部节点和容器。

但是,这并不妨碍您实现目标:

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

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

复选框中的“checked”属性和输入字段中的“readonly”以相同的方式工作。

编辑:

您必须提供元素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>

答案 1 :(得分: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>