【问题标题】:Greasemonkey: Why does this if statement always return true?Greasemonkey:为什么这个 if 语句总是返回 true?
【发布时间】:2016-02-15 18:45:22
【问题描述】:

这让我很困惑...我在 ajax 页面上使用 waitforkeyelements...我有一个 if 语句,如果有一个值为“Accept Offer”的按钮,它只会弹出一个警报。不幸的是,当仅有的 2 个按钮具有“继续探索”和“投资”的值时,它会弹出警报。我觉得它与真/假的东西有关,但我不明白为什么 getElementById 应该像这样使用,但我的选择器却没有。如果我添加 ===something,这确实有效,但我想知道为什么它不能这样工作。

因此,当有 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);

【问题讨论】:

    标签: javascript jquery if-statement greasemonkey


    【解决方案1】:

    你应该这样做

    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"]') 返回一个数组,数组总是等于 true,所以通过将其长度等于 0 来检查它是否真的包含任何元素。

    【讨论】:

    • 我是个白痴!大声笑....这就是为什么去学校学习基础知识会有所帮助...我写了很棒的脚本,但是当我遇到基本知识时我绊倒了...它可以通过使用来修复(一旦你说数组) - $( '.adv-action[value*="Accept Offer"]').val() 通常我会意识到它应该与警报匹配,但我被在选择器...谢谢!
    • 很高兴它有帮助..考虑投票并将其标记为正确答案。
    • 嘿嘿耶!它可以帮助其他人确定正确的答案,也为我赢得了一些代表! :)
    • 要仔细检查...如果我使用 [name=] 而不是也返回数组的 [value*=]?
    • 是的,它是返回数组的 $(elem)。无论选择器是什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2015-12-16
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    相关资源
    最近更新 更多