-2

コードは次のとおりです。

<span id="dpos">30</span>

<script>
var pxwidth;

$( "#id" )


.bind( "keydown", function( event ) {
 pxwidth = $("#dpos").text();

 if (pxwidth === 0)
 {
 // do something
 }

});

</script>

ここでは、条件 (if/else ステートメント) で使用される span 要素の値を取得しようとしています。しかし、ステートメントは実行されません。の正しい使い方はif (pxwidth === ?)

4

4 に答える 4

2

構文エラーがあります。バインド関数を閉じていません:

var pxwidth;

$( "#id" ).bind( "keydown", function( event ) {
    pxwidth = $("#dpos").text();

    if (pxwidth == 0) // <-- a double, not triple equal
    {
        // do something
    }
}); // <-- remember to include this

また、@Cerbrus が指摘しているように==、文字列を int と比較しているため、等号比較演算子を使用する必要があります。トリプル イコール===は、等価性とデータ型をチェックする同一の比較を行います。違いを示すには:

console.log( "0" == 0 ); // true
console.log( 0 == 0 ); // true
console.log( "0" === 0 ); // false
console.log( 0 === 0 ); // true
于 2013-02-12T13:17:06.967 に答える
1

===文字列と数値の比較には使用しないでください。

それ以外の:

if (pxwidth === 0)

使用する:

if (pxwidth == 0) /* or */ if (pxwidth === "0")

===true両方の値の値型が等しい場合のみが返されます。を
$("#dpos").text()返します。 その結果、次のようにそれらを比較します: 、これは誤りです。String
0Number
0 === "0"

比較演算子の詳細については、こちらをご覧ください。

于 2013-02-12T13:19:47.213 に答える
1

フィドルで正常に動作します

var pxwidth = $("#dpos").text();
alert(pxwidth);
if (pxwidth === "30") {
    alert('hi');
}

スパンが30含まれているため、チェックする0と常に false が返されます。

編集

この.text()関数は、データを文字列変数としてフェッチします。したがって、ifステートメントでは"、比較のために を使用しました。

于 2013-02-12T13:19:58.063 に答える
1

コードに少なくとも 2 つの問題があります。

1. 構文エラー:

これがすべてのコードである場合、構文エラーが発生します。ブラウザのコンソールに表示されるはずです。

2. 文字列と整数の比較:

.text()文字列を返しますが、それを整数と比較しようとしています (三重等価を使用して、データ型もチェックします)。比較を行う前に、その文字列を整数に解析する必要があります。

代わりに次のようにしてみてください。

$(function() {
    $("#id").on("keydown", function(event) {
        var pxwidth = parseInt($("#dpos").text(), 10);

        if (pxwidth === 0)
        {
        // do something
        }
    });
});

その他の考えられる問題:

  1. あなたはキーダウンイベントにバインドしています。ID をid持つ要素は入力要素ですか? そうしないと、ユーザーがイベントをトリガーする方法がありません。

  2. DOM の準備が整う前にイベントをバインドしようとしていますか? コードを DOM 対応のコールバック (私の例を参照) で実行するか、コードを<body>要素の最後に移動します。

補足:

.bind().on()jQuery 1.7 以降、が推奨されなくなりました。

于 2013-02-12T13:18:19.587 に答える