2016-05-13 82 views
0

我有点尴尬,但我不明白为什么这段代码没有像预期的那样工作。逻辑和/或运算符 - 意外结果结果

查看调试器和控制台日志,长度为1,innerText ='找不到记录。'我期待if语句被执行,但else语句被执行。可以肯定的是,我记录了innerText和tr.length,结果是'找不到记录'。和1个。我不在这里?

var tr = $('.users').find('tr'); 
if (tr.length === 1 && ((tr[0].innerText === 'No record found.') 
    || (tr[0].innerText === 'No matching records found') 
    || (tr[0].innerText === ''))) { 
//console.log('no record found is displayed.'); 
    $('.customTableInfo').addClass('DisplayNone').removeClass('Display');      
    $('.customEntries').addClass('DisplayNone').removeClass('Display');     
    $('.itemPerPageLabel').addClass('DisplayNone').removeClass('Display');    
    $('.customPaging').addClass('DisplayNone').removeClass('Display'); 
} else { 
    console.log(tr[0].innerText); 
    $('.customTableInfo').addClass('Display').removeClass('DisplayNone');      
    $('.customEntries').addClass('Display').removeClass('DisplayNone');      
    $('.itemPerPageLabel').addClass('Display').removeClass('DisplayNone');     
    $('.customPaging').addClass('Display').removeClass('DisplayNone'); 
} 
+1

不要使用' .innerText'。这不是标准的,并且不存在于FireFox中。正确的属性是'.textContent'。 – Barmar

+1

由于您使用jQuery,为什么不使用'tr.text()'? – Barmar

+0

@Barmar我将.innerText改为tr.text()。谢谢你的提示。 –

回答

3

也许你需要使用trim();避免空格

if (tr.length === 1 && ((tr[0].innerText.trim() === 'No record found.') 
    || (tr[0].innerText.trim() === 'No matching records found') 
    || (tr[0].innerText.trim() === ''))) { 

与此代码

$('.customTableInfo').addClass('DisplayNone').removeClass('Display');      
    $('.customEntries').addClass('DisplayNone').removeClass('Display');     
    $('.itemPerPageLabel').addClass('DisplayNone').removeClass('Display');    
    $('.customPaging').addClass('DisplayNone').removeClass('Display'); 

可以将其简化

$('.customTableInfo ,.customEntries , .itemPerPageLabel ,.customPaging').addClass('DisplayNone').removeClass('Display'); 
+1

谢谢。添加修剪就像一个魅力。 –

+1

@JeanB很高兴它帮助..很好运:) –