JavaScript脚本不会执行

时间:2013-10-21 15:59:05

标签: javascript php html

我有这个脚本和以下网站。看起来很奇怪,剧本甚至没有发出第一个警报。如果我用警报替换“update_table”函数,它会显示警告。

    <head>
    <script src="signals.js" type="text/javascript">
        update_table();</script>
</head>
<body>

现在这来自signals.js:

    function update_table()
{
    alert("h");
    var old_table = document.getElementById('signals').innerHTML;
    alert("h");
    var req = new XMLHttpRequest();
    alert("h");
    req.onreadystatechange = function(){
    if(req.status == 200)
    {
        if(req.readyState == 4)
        {
            var new_table = req.responseText;
            if(old_table != new_table)
            {
                //play sound
                alert("Sound!");
            }
            alert("Refresh!");
            setTimeout(update_table(), 5000);
        }
        }
    }
    var link = "table.php?refresh=true";
    alert("h");
    req.open("GET", link, true);
    req.send();
    alert("h");
}

6 个答案:

答案 0 :(得分:5)

您不能在具有外部源的函数内部拥有脚本

<script src="signals.js" type="text/javascript">
    update_table();
</script>

需要是两个脚本标签。

<script src="signals.js" type="text/javascript"></script>
<script>
    update_table();
</script>

答案 1 :(得分:3)

您不能将<script>元素作为子文本节点的src元素作为子文本节点。如果这样做,则只会使用该属性,并且将忽略内联脚本。

<script src="signals.js"></script>
<script>update_table();</script>

(假设代码块末尾的JS表示signals.js的内容,而不是HTML文档正文。)

另请参阅HTML 5 specification for the script element

  

内容模型
  如果没有src属性,则取决于type属性的值,但必须匹配脚本内容限制   如果存在src属性,则该元素必须为空或仅包含与脚本内容限制匹配的脚本文档。

答案 2 :(得分:2)

您的javascript需要位于<script>代码中。

答案 3 :(得分:2)

您需要在包含signals.js的脚本之后移动脚本(updateTable())的内容:

<script src="signals.js" type="text/javascript"></script>
<script>update_table();</script>

来自w3的相关位:

  

如果src具有URI值,则用户代理必须忽略该元素   内容并通过URI检索脚本。

http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.1

答案 4 :(得分:1)

您的javascript周围需要<script>个标签。

此外,在定义之前无法执行update_table()

答案 5 :(得分:0)

将JS代码放在<script>标记中,因为您已经创建了一个函数,所以需要触发它来执行操作...类似于<body onload=update_table()>