2009-11-07 80 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

相关问题