2

だから私はこの小さなコードを手に入れましたが、それを機能させることができず、理由がわかりません。私が書いた別のコードからコードをコピーし、必要のないものだけを削除して名前を変更しました。アラート ボックスに変数の値を表示したいと考えています。

JS:

<script>
     function ready2() {
         var rdy = $("#rdy").value;
         alert(rdy); 
     }
</script>

HTML:

<body>
   <form id="form2" onsubmit="return false;">
      <div>Ready:</div>
      <input type="text" id="rdy"></input>
      <button id="btn" onclick="ready2()">Ready</button>
   </form>
</body>

「hello world」などに置き換える $("#rdy").value;とうまくいきます。したがって、問題は変数またはそれよりも優れたものに違いありません: 入力ボックスです。アラート ボックスには常に「未定義」と表示されますが、その理由はわかりません。

何か助けはありますか?

4

2 に答える 2

4

あなたはこれを必要とします -

var rdy = $("#rdy").val();

また

var rdy = $("#rdy")[0].value;

DOM要素でのみ使用できますvalue.jqueryオブジェクトで使用しているため、未定義になります-$("#rdy")

于 2013-06-24T11:13:25.900 に答える
0

あなたがするとき:

$("#rdy")

実際には、すべてのノードを含む jQuery オブジェクト配列を生成しています。

[domNode1, domNode2,... domNodeN] 
//note this array is a jQuery object, not an Array

これは ID であるため、次の 1 つだけを見つける必要があります。

[domNodeWithIdrdy]

getElementByIdjquery 配列内の DOM ノードは、値に直接アクセスできることを意味する場合と同じです。

var jArray = $("#rdy");
console.log(jArray[0].value);

jQuery には、これを行う関数もいくつか用意されています。

$("#rdy").value();

ただし、val()関数は jquery 配列の最初の要素の値のみを返し、配列に複数の要素が存在することを無視することに注意してください。

.val()また、行うよりも行う方が安全ですjArray[0].value。これは、配列が空の場合、 から読み取ろうとするvalueためですundefined。すなわち:

jArray = $("#somethingThatDoesntExist");
assert( jArray.length === 0 );
assert( jArray[0] === undefined );
于 2013-06-24T11:18:57.060 に答える