这是一段代码:
<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 === ?)
的正确用法是什么?
答案 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
}
});
});
其他可能出现的问题:
您绑定了一个keydown事件。 ID为id
的元素是否为输入元素?否则,用户将无法触发事件。
您是否尝试在DOM准备好之前绑定事件?在支持DOM的回调中运行代码(请参阅我的示例),或将代码移到<body>
元素的末尾。
附注:
自从jQuery 1.7。以来, .bind()
被弃用,而不是.on()
答案 2 :(得分:1)
请勿使用===
将字符串与数字进行比较。
而不是:
if (pxwidth === 0)
使用:
if (pxwidth == 0) /* or */ if (pxwidth === "0")
===
仅返回true
两个值在值和类型中相等。
$("#dpos").text()
会返回String
,
0
是Number
导致你比较它们:0 === "0"
,这是假的。
答案 3 :(得分:1)
工作正常on fiddle
var pxwidth = $("#dpos").text();
alert(pxwidth);
if (pxwidth === "30") {
alert('hi');
}
您的跨度中包含30
,因此使用0
进行检查将始终返回false。
.text()
函数将数据作为字符串变量提取。因此,在if
语句中,我使用"
进行比较。