2009-11-07 84 views
0

我寫了以下內容:Javascript:爲什麼我的代碼沒有任何警報?

var pages=["[www.facebook.com] Facebook is cool. ","[www.bbc.co.uk] British broadcasting corporation. "]; 

function findScoreC2(s){ 
    var scores=[]; 
    var percentageScores=[]; 
    var contentsArray=[]; 
    s=s.toLowerCase(); 
    for(i=0;i<pages.length; i++){ 
    contentsArray=pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" ")); 
    var lowerCaseContents=(pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" "))).toLowerCase(); 
    scores[i] =(lowerCaseContents.split(s)).length-1 
    }; 

    percentageScores=(scores[i]/contentsArray[i].length) * 100; 
    var finalArray=[]; 

    for(i=0;i<percentageScores.length;i++){ 
    finalArray.push("{score:"+percentageScores[i]+",index:"+i+"}") 
    }; 
    alert(finalArray); 
} 


findScoreC2("facebook"); 

然而,alert(finalArray)警報沒有(即一個警告框出現,但它說什麼),當它應提醒"{score:33,index:0},{score:0,index:1}"

任何人都可以啓發我爲什麼這可能是?

非常感謝

+0

我看不到代碼正確,也許你需要編輯你的問題 – 2009-11-07 17:29:58

+0

即使我不能看到它時,在不登錄我在登錄後, 我以前可以。我不知道爲什麼......但出於某種原因,情況就是如此。 – 2009-11-07 18:40:11

回答

1

您設置percentageScores爲一個數字。然後您嘗試迭代到它的length屬性,當您執行percentageScores.length時,該屬性會爲您提供undefined,因此for循環不會迭代。然後,您使用一個空數組進行提醒,其數組toString產生空字符串。

你可能想這一點:

for(i=0;i<pages.length; i++){ 
    contentsArray=pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" ")); 
    var lowerCaseContents=(pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" "))).toLowerCase(); 
    scores[i] =(lowerCaseContents.split(s)).length-1 
    percentageScores[i]=(scores[i]/contentsArray[i].length) * 100; 
}; 
+0

感謝您的回覆。我剛剛給出了一個嘗試,因爲我幾乎在同一時間意識到,我寫的是百分比分數線在for循環之外,所以我改變了代碼以包含它,並且在最後的for循環中,改變它迭代到scores.length(而不是百分比分數)。現在,它提醒「{分數:未定義,索引:0},{分數:未定義,索引:1}」,但我現在看不到現在的問題 – Deacon 2009-11-07 17:40:22

+0

是否在索引時將[i]添加到百分比分數進去? – Claudiu 2009-11-07 17:47:53

+0

我沒有,但剛剛閱讀您的回覆並完成了,它的工作原理!差不多。現在我得到了「{score:100,index:0}」,它似乎表明它認爲contentsArray [0]的值是1,實際上它是3(「Facebook很酷」。)? 非常感謝您的幫助,我很感激。 – Deacon 2009-11-07 17:52:39

相關問題