这两个都返回true。是一个布尔值,另一个是文本。不应该没有.value错误,因为它引用的是对象而不是对象值属性? 请帮助我理解这一点。
<input type="text" name="sigstatus1" id="sigstatus1" style="display:none;" size="40" fieldlength="50"></input>
<input type="text" name="sigstatus2" id="sigstatus2" style="display:none;" size="40" fieldlength="50"></input>
var sigStatus1 = document.getElementById("sigstatus1").value;
var sigStatus2 = document.getElementById("sigstatus2");
sigStatus1 = true;
sigStatus2 = true;
alert("Sig1 " + sigStatus1 + "\nSig2 " + sigStatus2);
答案 0 :(得分:1)
您问题的直接答案是:
alert("Sig1 " + sigStatus1 + "\nSig2 " + sigStatus2);
将两个值都显示为true,因为在该行代码之前,您将两个值都设置为true:
sigStatus1 = true;
sigStatus2 = true;
alert("Sig1 " + sigStatus1 + "\nSig2 " + sigStatus2);
看起来你认为这段代码:
var sigStatus1 = document.getElementById("sigstatus1").value;
sigStatus1 = true;
将DOM元素值设置为true。它不会。
当你这样做时:
var sigStatus1 = document.getElementById("sigstatus1").value;
您只是从DOM元素中获取值并将其放入局部变量中。由于它是文本字段,因此该值将是文本字符串。
然后你这样做:
sigStatus1 = true;
您只是使用布尔值true
替换该局部变量的内容(它不会对DOM元素执行任何操作)。然后,当您在警报中显示该变量时,javascript会将布尔值转换为文本(出于显示目的),您会看到“true”。
如果要设置显示DOM元素的值,您只需执行以下操作:
var sigStatus1 = document.getElementById("sigstatus1").value;
alert(sigStatus1);
如果你想设置DOM元素的值,你可以这样做:
document.getElementById("sigstatus1").value = "whatever";
答案 1 :(得分:0)
这两个值都是布尔值true
,您将明确地覆盖这些值:
sigStatus1 = true;
sigStatus2 = true;
也许你在找这个?
var sigStatus1 = document.getElementById("sigstatus1").value;
var sigStatus2 = document.getElementById("sigstatus2");
alert("Sig1 " + sigStatus1 + "\nSig2 " + sigStatus2);
变量sigStatus2
应提醒[object HTMLDivElement]
(由对象toString
方法内部生成)。