获取 tag(<span>) 的值以在 if/else 条件语句中使用



这里有一个代码:

<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 === ?)的正确用法是什么?

有一个语法错误,您没有关闭绑定函数:

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

不要使用===来比较字符串和数字。

代替:

if (pxwidth === 0)

用途:

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

===仅返回true,这两个值在值类型中都相等
$("#dpos").text()返回一个String
CCD_ 9是CCD_
结果你这样比较它们:0 === "0",这是错误的。

有关比较运算符的详细信息,请单击此处

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

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>元素的末尾。

附带说明:

.bind()被弃用,取而代之的是.on(),因为jQuery 1.7。

在fiddle 上运行良好

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

您的span中有30,因此使用0进行检查将始终返回false。

编辑

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

最新更新