-2

これらはどちらも true を返します。1 つはブール値で、もう 1 つはテキストです。オブジェクトの値属性ではなく、オブジェクトを参照しているため、.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);

フィドルhttp://jsfiddle.net/Xp7jX/

4

2 に答える 2

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";
于 2012-04-04T20:09:43.263 に答える
0

両方の値はブール値trueであり、値を明示的に上書きしています。

sigStatus1 = true;
sigStatus2 = true;

多分あなたはこれを探していましたか?

var sigStatus1 = document.getElementById("sigstatus1").value;
var sigStatus2 = document.getElementById("sigstatus2");
alert("Sig1 " + sigStatus1 + "\nSig2 " + sigStatus2);

変数は、(objectsメソッドによって内部的に生成される)のsigStatus2ようなアラートを出す必要があります。[object HTMLDivElement]toString

于 2012-04-04T19:40:38.470 に答える