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。
我是个白痴!大声笑....这就是为什么去学校的基础知识会有所帮助......我写了很棒的脚本,但当我打基本知识的东西时,我就会摔倒......它可以通过使用固定(一旦你说数组) - $('.adv-action [value * ='Accept Offer']')。val()通常情况下,我会意识到它应该匹配alert,但是我被使用“value”选择器......谢谢! –
很高兴帮助..考虑投票并将其标记为正确答案。 – void
不能接受3分钟的时间大声笑....我会尽力记住 –