Greasemonkey:为什么这个if语句总是返回true?

问题描述:

这使我困惑......我在ajax页面上使用waitforkeyements ...我有一个if语句,如果有一个值为“Accept Offer”的按钮,应该只弹出一个提示。不幸的是,当只有2个按钮的值为“继续探索”和“投资”时,它会弹出警报。我有一种感觉,它与真/假的东西有关,但我不明白为什么getElementById应该像这样使用,但我的选择器没有。如果我添加一个===something,但是我想知道为什么它不能像这样工作。Greasemonkey:为什么这个if语句总是返回true?

因此,当有2个按钮的值为“继续探索”和“投资”时,我收到一条警报,提示“是!”然后发出一条提示“投资”的警报。当不存在具有值“Accept Offer”的按钮时,它不应该运行“else”吗?

function countit() { 

    if ($('.adv-action[value*="Accept Offer"]')){ 

    alert("Yes!") 
    alert($('.adv-action').val()) 

    } 

    else{ 
    alert("no") 
    alert($('.adv-action').val()) 
    } 
} 

waitForKeyElements ('[value*="Continue Exploring"]', countit); 

你应该做

if ($('.adv-action[value*="Accept Offer"]').length!=0){ 

    alert("Yes!") 
    alert($('.adv-action').val()) 

    } 

else{ 
    alert("no") 
    alert($('.adv-action').val()) 
} 

$('.adv-action[value*="Accept Offer"]')返回数组,数组总是等同于真实的,所以检查它是否实际包含的任何元素或不等同其长度为0。

+0

我是个白痴!大声笑....这就是为什么去学校的基础知识会有所帮助......我写了很棒的脚本,但当我打基本知识的东西时,我就会摔倒......它可以通过使用固定(一旦你说数组) - $('.adv-action [value * ='Accept Offer']')。val()通常情况下,我会意识到它应该匹配alert,但是我被使用“value”选择器......谢谢! –

+0

很高兴帮助..考虑投票并将其标记为正确答案。 – void

+0

不能接受3分钟的时间大声笑....我会尽力记住 –