-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

您的代码至少有两个问题:

1.语法错误:

如果这是您的所有代码,您将收到语法错误。它应该在浏览器的控制台中可见。

2. 比较字符串和整数:

.text()返回一个字符串,但您试图将其与整数进行比较(使用三等式,同时检查数据类型)。在进行比较之前,您必须将该字符串解析为整数。

尝试这样的事情:

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

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

其他可能的问题:

  1. 您正在绑定到 keydown 事件。具有 IDid的元素是输入元素吗?否则用户将无法触发事件。

  2. 您是否尝试在 DOM 准备好之前绑定事件?在 DOM-ready 回调中运行您的代码(参见我的示例),或将您的代码移动到<body>元素的末尾。

旁注:

.bind().on()从 jQuery 1.7 开始,不推荐使用.

于 2013-02-12T13:18:19.587 回答
1

不要===用于将字符串与数字进行比较。

代替:

if (pxwidth === 0)

采用:

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

===只返回true两个值在值类型上相等。
$("#dpos").text()返回 a String
0是 a Number
导致您像这样比较它们:0 === "0",这是错误的。

有关比较运算符的更多信息在这里。

于 2013-02-12T13:19:47.213 回答
1

在小提琴上工作正常

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

您的 span 包含30在其中,因此检查 with0将始终返回 false。

编辑

.text()函数将数据作为字符串变量获取。因此,在if声明中,我使用了"for 比较。

于 2013-02-12T13:19:58.063 回答