2

jQueryを学ぶのは初めてで、このスクリプトを作成しました。

<script type="text/javascript">
    $(document).ready(function(){
        alert($("#myInput").value);
        alert($("#myInput").length);
    });
</script>

<input id="myInput" value="Hello, World!" type="text" />

なぜそれがいつも私に表示されるのではないのかわかりません:

undefined
1

予想される出力は次のとおりです。

Hello, World!
13

アドバイスしてください。前もって感謝します。

4

3 に答える 3

3

value有効なjQueryメソッドではありません。あなたはおそらく欲しい:

$(document).ready(function() {
    alert($("#myInput").val());
    alert($("#myInput").val().length);
});

メソッド(.valパラメーターが渡されていない場合)は、一致した要素の現在の値を返します(該当する場合)。通常/基本のJavascriptでは.value、要素オブジェクトで使用しますが、 (から返されるもの)$()のようなものではない「jQueryオブジェクト」を返します。したがって、jQueryオブジェクトにはプロパティがなく、を返します。一方(そして最後に追加する)はあなたのために働いたでしょう。HTMLElementdocument.getElementByIdvalueundefineddocument.getElementById("myInput").value.length

この.lengthプロパティは、Javascript(および配列)の文字列変数の基本的なプロパティです。から返される結果は$()配列のようなオブジェクトであるためlength、セレクターに一致する要素の数を表すプロパティがあります。あなたの場合、IDが「myInput」の要素である1と一致しました。

于 2013-01-31T18:27:09.180 に答える
1

jQueryオブジェクトのメソッドを使用できます。次のval()ようにしてみてください。

$(document).ready(function(){
    var value = $("#myInput").val()
    alert('Value: ' + value);
    alert('Value: ' + value.length);
});
于 2013-01-31T18:29:17.473 に答える
0

この種の質問は何度も議論され、答えられてきました。常に、答える前に検索を行ってください。いくつか提案させてください。

  1. .val()テキストボックス、チェックボックス、ラジオ、テキストエリアなどのさまざまなタイプがあり、それぞれがさまざまなタイプを使用している場合、主にフォーム入力の現在の値を取得するために使用されるのような組み込み関数があります。したがって、最初のスクリプトを次のように変更します。

    alert($("#myInput").val());
    
  2. によって返されるオブジェクトは$("#myInput")、要素のjQueryコレクションになります。したがって、は1つだけ<input type="text" id="myInput" />です。を使用する必要があります$("#myInput").val().length。これにより、テキストボックスの値の長さがわかります。したがって、2番目のスクリプトを次のように変更します。

    alert($("#myInput").val().length);
    
于 2013-01-31T18:27:12.300 に答える