为什么我的javascript警报没有显示出来

时间:2012-01-31 17:54:51

标签: javascript

我在谷歌浏览器中测试了下面的代码,但警报显示为什么? (我是从http://msdn.microsoft.com/en-us/magazine/cc163419.aspx

取的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test</title>
</head>
<body>
<script type="text/javascript">
function filter(pred, arr) {
    var len = arr.length;
    var filtered = []; // shorter version of new Array();
    // iterate through every element in the array...
    for (var i = 0; i &lt; len; i++) {
        var val = arr[i];
        // if the element satisfies the predicate let it through
        if (pred(val)) {
            filtered.push(val);
        }
    }
    return filtered;
}

var someRandomNumbers = [12, 32, 1, 3, 2, 2, 234, 236, 632, 7, 8];
var numbersGreaterThan100 = filter(function (x) {
    return (x > 100) ? true : false;
}, someRandomNumbers);

// displays 234, 236, 632
alert(numbersGreaterThan100);

</script>
</body>
</html>

5 个答案:

答案 0 :(得分:5)

你在这里有一个错误,其中一些html没有完全正确。这会阻止您访问alert

for(var i = 0; i &lt; len; i++) {

将其更改为:

for(var i = 0; i < len; i++) {

答案 1 :(得分:3)

这一行:

for(var i = 0; i &lt; len; i++) { 

您有一个HTML实体而不是一个小于号。修复它并且它将起作用。

侧面说明:

function(x) { return (x > 100) ? true : false; }

这是由冗余部门编写的。请改用return x>100;

答案 2 :(得分:1)

你的For循环中有“特殊字符”HTML。

变化:

for(var i = 0; i &lt; len; i++) {

要:

for(var i = 0; i < len; i++) {

我做到了,它对我有用。

答案 3 :(得分:1)

我唯一看到的是:for(var i = 0; i &lt; len; i++) {

这应该是:for(var i = 0; i < len; i++) {

注意“&lt;”而不是&lt;

答案 4 :(得分:1)

有时复制和粘贴时会出现HTML特殊字符。在这种情况下,你有&amp; LT;而不是&lt;在你的for循环中。改变它,它的工作原理。

经验法则:在Javascript中,当一行不起作用时,语法错误为95%或时间