2015-11-14 162 views
0

這使我困惑......我在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); 

回答

4

你應該做

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分鐘的時間大聲笑....我會盡力記住 –