我有以下javascript代码:
function changeButtonState(targetSelector, action, iconClass) {
var $target = $(targetSelector);
var $targetSpan = $(targetSelector + ' span');
$targetSpan.removeClass('sprite-blank').addClass(iconClass);
}
如何$targetSpan.removeClass(..).addClass
仅在调用函数时iconClass
具有值时才能生成{{1}}。我想我感到困惑的是,我是否检查它是否已定义,或者我是否检查其长度是否为0或更长?
答案 0 :(得分:4)
只需使用if语句:
if (iconClass){}
或者,typeof
:
if (typeof iconClass != 'undefined') {}
答案 1 :(得分:1)
if (typeof(iconClass)=='undefined') {
// nothing was passed
}
答案 2 :(得分:1)
的 LIVE DEMO 强>
if ( 'undefined' != typeof iconClass ) { /**/ }
答案 3 :(得分:1)
您的用例必须假设iconClass是一个字符串。在这种情况下,我会建议第一个if条件。第二个可能限制性太强,通常仅在调用函数的人实际上没有传递第3个参数或传递未定义时使用。但是如果调用者传递null或空字符串,则第一个if条件也将捕获这些条件。这是最容易编写的,在Javascript中很常见,只需检查if (variable) { }
因为它会捕获更多内容并且非常容易读写。
if (iconClass) {
// Executes if iconClass is not null, not undefined, not 0, and not empty string
}
if (typeof iconClass != 'undefined') {
// WILL execute if iconClass is null, 0, empty string
// Only will not execute if iconClass is undefined!
}
答案 4 :(得分:0)
据推测,iconClass
应该是一个字符串(类名),所以你应该测试它是否是一个字符串:
if (typeof iconClass == 'string')
或者你可以使用正则表达式同时测试它是一个有效的类名:
if (/^[a-z][a-z0-9]*$/i.test(iconClass))
正则表达式可能需要更多字符来测试(至少连字符),我会留给你。接受What characters are valid in CSS class names?的答案可能有所帮助。
答案 5 :(得分:-1)
if(iconClass.length > 0){
$targetSpan.removeClass('sprite-blank').addClass(iconClass);
}