获取用于if / else条件语句</span>的标记(<span>)的值

时间:2013-02-12 13:13:43

标签: javascript jquery

这是一段代码:

<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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

<强> 1。语法错误:

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

<强> 2。将字符串与整数进行比较:

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

尝试这样的事情:

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

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

其他可能出现的问题:

  1. 您绑定了一个keydown事件。 ID为id的元素是否为输入元素?否则,用户将无法触发事件。

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

  3. 附注:

    自从jQuery 1.7。

    以来,

    .bind()被弃用,而不是.on()

答案 2 :(得分:1)

请勿使用===将字符串与数字进行比较。

而不是:

if (pxwidth === 0)

使用:

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

===仅返回true两个值在值类型中相等。
$("#dpos").text()会返回String
0Number 导致你比较它们:0 === "0",这是假的。

<强> More info on comparison operators here.

答案 3 :(得分:1)

工作正常on fiddle

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

您的跨度中包含30,因此使用0进行检查将始终返回false。

修改

  

.text()函数将数据作为字符串变量提取。因此,在if语句中,我使用"进行比较。