3

我不知道为什么这不起作用。我的意思是据我所知它应该按字母顺序将我的数组打印到 div“输出”

<!DOCTYPE HTML>
 <html>
   <head>
   <meta charset="utf-8">
<title> Lexicographic ordering </title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
    var words = [];
        var input = prompt("Please enter a word or type end to stop prompts");
    while (input != 'end') {
        words.push(input);
        input = prompt("Please enter a word or type end to stop prompts");
    }
    words.sort();
    getElementById('#output').innerHTML= words.join();
</script>
 </head>
 <body>
    <header>Lexicographic Ordering </header>
    <hr>
 <div class ="page-wrapper">
     h1> Lexicographic Ordering </h1>
    <div id="output"></div>
 </div>
</body>
</html>
4

2 回答 2

4

您的代码中有两个小错误,它们都在这一行中:

getElementById('#output').innerHTML= words.join();

getElementById不是 的一部分window,它是document对象的一部分,因此您必须正确引用它。此外,该方法需要一个 ID,而不是选择器,因此您不需要在它前面加上 #。

document.getElementById('output').innerHTML= words.join();

那应该做你想做的!或者,由于我注意到您包含 jQuery,因此您可以$('#output').innerHTML = ...实现相同的效果。

于 2013-10-05T04:05:58.987 回答
2

您也可以尝试<script>在结束时移动块,就在</body>. 之后的任何地方<div id="output"></div>

某些浏览器上的 JavaScript 在脚本执行或尝试引用它们时必须引用其 HTML 解析器未解析的某些元素时会失败。

另外,您不要使用#with getElementById(...);#与 Jquery 一起使用。这是纯 JavaScript。做了getElementById('output').whatever...;

编辑:

Patrick Evans 建议的另一个选择是将 JavaScript 代码移动到onload()事件处理程序方法中以执行代码。这确保了在我们尝试操作之前,HTML 已完全加载到 DOM 中。

于 2013-10-05T04:21:09.517 回答