-2

我正在使用 Y.one(selector).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);
}

这种方法在我的情况下确实有效。

4

5 回答 5

4

你为什么不直接检查“真实性”呢?

if (check_value) {
   alert(check_value);
}

我想这与您的(预期)检查基本相同。如果你需要检查0(一个数字),只需使用这个:

if (check_value || check_value === 0) {
   ...
}
于 2012-09-26T12:59:46.193 回答
2

如果它是一个空字符串,那么它不是未定义的,也不是空的。由于您检查它是否未定义不为空不是空字符串,那么它将通过。

&&不使用||

于 2012-09-26T12:57:08.880 回答
1

你可以看看 Y.Lang.isValue()

http://yuilibrary.com/yui/docs/api/classes/Lang.html#method_isValue

于 2012-09-26T15:52:53.163 回答
0

用简单的英语看逻辑,check_value != undefined || check_value != null || check_value != ""如果是undefined or null or "",如果是null,则不是未定义,如果是空白,则不是null,所以一切都通过了;你正在寻找一个合乎逻辑AND的而不是OR

试试这个:

var check_value = Y.one(selector).getAttribute('value');
if (check_value != undefined && check_value != null && check_value != "") {
    alert(check_value);
}
于 2012-09-26T12:57:21.037 回答
0

您看到警报是因为您的if语句有OR( ||) 子句。在value属性为空字符串的情况下,最后一个条件 ( check_value != "") 应该失败。但是,由于""不等于undefined第一个条件已经返回 true,if语句测试通过(它不会评估其他条件,因为它不需要)并且if块被执行。

我怀疑您实际上想使用AND( &&) 代替。

于 2012-09-26T12:58:12.167 回答