Javascript setAttribute和removeAttribute不';不能在chrome和firefox中工作

Javascript setAttribute和removeAttribute不';不能在chrome和firefox中工作,javascript,Javascript,setAttribute和removeAttribute不适用于chrome,firefox仅适用于IE 下面的代码在IE中运行良好,不适用于任何其他爆炸器 <head> <script type="text/javascript"> function showUser2() { buttonpassvalue1.setAttribute("disabled","disabled"); buttonpassvalue.removeAttribute("d

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>

函数showUser2()
{
buttonpassvalue1.setAttribute(“禁用”、“禁用”);
按钮PassValue.removeAttribute(“禁用”);
}
这将解散
按这个
当到达上述代码时,其终止


感谢您的帮助

解释代码在其他浏览器中不起作用的原因有点复杂。它与如何处理“disabled”属性有关,因为存在不同类型的内部节点和容器

然而,这并不妨碍你实现你正在做的事情:

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>

函数showUser2(v){
var buttonpassvalue1=document.getElementById('buttonpassvalue1');
var buttonpassvalue2=document.getElementById('buttonpassvalue1');
按钮passvalue1.disabled='disabled';
按钮PassValue.removeAttribute(“禁用”);
}
这将解散
按这个

在符合W3C DOM规范的浏览器中,disabled属性设置元素在默认情况下是否被禁用,而不设置其当前状态。IE不遵循该模型,设置disabled属性也会设置当前状态

应使用disabled 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>

功能禁用元素(el){
el.disabled=真;
}
功能使能元件(el){
el.disabled=假;
}

禁用输入 启用输入
发布一个完整的示例。
setAttribute
在IE8中对我来说是未定义的。什么类型的对象是
buttonpassvalue
buttonpassvalue1
?@Blender我更改了上面的代码,请在IE、Chrome、Opera、Mac、Firefox中试用……这只在IE中起作用。看起来你甚至没有做一些基本的调试。Chrome控制台显示未捕获引用错误:按钮PassValue1未定义。不要依赖浏览器为元素创建全局变量,而是使用
document.getElementById
document.getElementsByName
来获取元素的引用。如果使用属性,则应使用值
true
false
。是,除了只读、选中和禁用之外,它们不是正确的布尔值。人们将它们设置为“false”是一个常见的错误,只是为了发现复选框仍然处于选中状态。@Schien不走运……请检查我最近的代码,并在IE和中尝试它others@Schien:这适用于HTML属性,但不适用于等效的DOM属性(您正在使用的)。正如您在HTMLDOM规范()中所看到的,
disabled
是一个布尔属性。您是对的,
ele.setAttribute('disabled',false)
没有按预期工作,但是
ele.disabled=false
does.Aha。这是一个按钮,按钮没有“值”属性。当然可以添加一个,但在IE中,它将准备按钮的内部文本作为其值。因此,传入的值不正确。