我们说我有以下代码:
var t = $("#objectID").html();
检查t是否已定义且具有适当的值很容易。
if (typeof(t) === 'undefined' || t == null || t == '')
t = 'something else';
OR
var t = $("#objectID").html() || 'something else';
我的问题是,如果您有类似以下内容的内容:如何在继续之前检查未定义的值?
$("#object").find("element").html().replace(/ |t/g, '').trim();
如何在没有大量支票的情况下继续下线之前,如何确保对象的每个部分都是合法的?
如果有很多类似于.replace和.trim的东西,比如10个左右怎么办?你如何检查每一个?
答案 0 :(得分:1)
您可以使用.html()
$("#object").find("element").html(function(html){
return ((html || 'Something').replace(/ |t/g, '') || 'Something else').trim();
});
所以,你正在做的是首先检查html是否有值,如果它没有,则给它一些默认值。然后,您将来自replace的返回字符串分组,并检查它是否具有 truthy 值,或者也为其赋予默认值然后修剪它。
答案 1 :(得分:0)
这是我如何做到这一点,根据需要进行检查。
var element = $("#object").find("element");
var t = element.length ? element.html() : '';
t = t.replace(/ |t/g, '').trim();
第一步是创建一个名为element的变量来保存jQuery对象。任何时候你不止一次使用相同的jQuery搜索,将它保存到变量是个好主意:它避免了重复并提高了性能。
下一步是调用jQuery的长度方法来测试它是否真的找到了任何HTML元素。如果" #object"或"元素"如果找不到,则element变为长度为0的空jQuery对象,并且在JavaScript条件检查中将0视为false。
如果元素的长度至少为1,那么我们知道它是合法的,并在其上安全地调用html()。
如果length为0,则t仅设置为空字符串。检查长度是必要的,因为在空的jQuery对象上调用html()会返回undefined而不是字符串并导致错误。
我用的是?条件运算符为了简洁,但您可以使用if语句进行完全相同的检查var element = $("#object").find("element");
if (element.length) {
var t = element.html();
} else {
var t = '';
}
t = t.replace(/ |t/g, '').trim();
我喜欢将默认设置为空字符串,以确保变量始终为字符串。这样我可以用它调用replace()或trim()或任何其他字符串方法。
在JavaScript条件下,空字符串的计算结果也为false,以便日后查看。
if (t) {
doSomethingWith(t);
}