Greasemonkey:为什么这个 if 语句总是 return 为真?

Greasemonkey: Why does this if statement always return true?

这让我感到困惑...我在 ajax 页面上使用 waitforkeyelements...我有一个 if 语句,如果有一个值为 [=17 的按钮,它应该只弹出一个警告=].不幸的是,当仅有的 2 个按钮具有 "Continue Exploring" 和 "Invest" 的值时,它会弹出警报。我感觉它与 true/false 相关,但我不明白为什么 getElementById 应该像这样工作,但我的选择器却没有。如果我添加一个 ===something,这确实有效,但我想知道为什么它不能像这样工作。

因此,当有 2 个按钮的值分别为 "Continue Exploring" 和 "Invest" 时,我会收到一个提示 "Yes!",然后是一个提示 "Invest" .当没有值 "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"]') returns 数组和数组将始终等于 true,因此通过将其长度等于 0 来检查它是否实际包含任何元素。