使用按钮OnClick =" counter"进行document.write()时未定义。

时间:2015-04-11 14:38:08

标签: javascript html

我是编程新手,需要一些帮助,为什么document.write()没有工作,基本上页面崩溃了......有人可以帮帮我吗?

<!DOCTYPE html>
<html>
<head>
</head>
<script type="text/javascript">

function showText() {
var x;
var counter;
if ( x === 0) {
counter = 0;
x = 1;
}
counter = counter + 1;
document.write("Times clicked: " + counter);
}


</script>
<body>
<script type="text/javascript">
showText();
</script>

<button onclick="showText();">Click Me!<button>


</body>
</html>

1 个答案:

答案 0 :(得分:2)

避免使用document.write

从MDN开发者网络documentation page引用:

  

注意:当document.write写入文档流时,在已关闭(已加载)的文档上调用document.write会自动调用document.open来清除文档。

基本上,您的问题是在页面加载后使用document.write:这将导致删除页面的整个内容并显示该字符串。

此外,您的代码无效,因为您的count变量是在showText函数内声明的,并且您尝试在其外部访问它,从而导致错误。

解决方案

为了使你的代码工作,你应该创建另一个元素,让我们说一个<p>元素,并在其中显示文本。以下是正确页面的示例:

<!DOCTYPE html>
<html>
<head></head>
<body>
    <button id="btn">Click me!</button>
    <p id="txt">Times clicked: 0</p>

    <script type="text/javascript">
        function showText() {
            count++;
            text.textContent = "Times clicked: " + count;
        }

        var count = 0,
            button = document.getElementById("btn"),
            text = document.getElementById("txt");

        button.addEventListener("click", showText);
    </script>
</body>
</html>

查看 live demo here