我正在使用Y.one(选择器).getAttribute('value');返回页面上的值,我在处理value =“”的情况时遇到了问题。
var check_value = Y.one(selector).getAttribute('value');
if (check_value != undefined || check_value != null || check_value != "") {
alert(check_value);
}
通过所有这些检查,当我正在查看的元素的值为“”时,我将获得一个空的警告框。在这种情况下,因为我知道我要找的值是一个数字我可以改变检查只是寻找一个数字> 0并让它工作,但我想知道是否有人知道一种方法来检查我没有处理数字数据的情况下没有值。
if (check_value >0) {
alert(check_value);
}
此方法适用于我的情况。
答案 0 :(得分:4)
为什么不直接检查'真实性'?
if (check_value) {
alert(check_value);
}
我想,这与你的(预期)检查基本相同。如果您需要检查0
(数字),请使用此选项:
if (check_value || check_value === 0) {
...
}
答案 1 :(得分:2)
如果它是一个空字符串,那么它不是未定义的,也不是null。由于您检查它是否未定义或非空或不是空字符串,因此它将通过。
使用&&
而不是||
答案 2 :(得分:1)
您可以查看Y.Lang.isValue()
http://yuilibrary.com/yui/docs/api/classes/Lang.html#method_isValue
答案 3 :(得分:0)
查看普通英语check_value != undefined || check_value != null || check_value != ""
中的逻辑,如果它是undefined or null or ""
,如果它是null,则它不是未定义的,如果它是空的,它不是空的,所以一切都通过;您正在寻找合乎逻辑的AND
而不是OR
试试这个:
var check_value = Y.one(selector).getAttribute('value');
if (check_value != undefined && check_value != null && check_value != "") {
alert(check_value);
}
答案 4 :(得分:0)
您看到了提醒,因为您的if
语句包含OR
(||
)条款。如果value
属性为空字符串,则最后一个条件(check_value != ""
)应该失败。但是,由于""
不等于undefined
,因此第一个条件已经返回true,if
语句测试通过(它不会评估其他条件,因为它不需要)并执行if
块。
我怀疑你确实想要使用AND
(&&
)代替。