这里有一个代码:
<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
}
});
});
其他可能的问题:
您正在绑定到一个keydown事件。ID为
id
的元素是否为输入元素?否则,用户将无法触发事件。您是否试图在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
语句中,我使用了"
进行比较。