开发者问题收集

JavaScript 代码中的空变量

2017-04-05
101

尽管我的变量已分配给 HTML 中的按钮,但它一直显示为空。按钮按下后无法正常工作。变量为“clickMe”

var yourName;   //global variable accessible to all functions

function showAnotherMessage() {
    alert("Hi " + yourName + ".\nThis is an alert message is no longer defined\nin the HTML but in a JavaScript file");
}

function init() {
    yourName = prompt("Hi. Enter your name.\nWhen the browser window is first loaded\nthe function containing this prompt window is called.", "Your name");
    var clickMe = document.getElementById("buttonclick");
  clickMe.onclick = showAnotherMessage;
    }

window.onload = init();
1个回答

避免使用 window.onload ,因为它在页面生命周期中触发得太晚 - 它仅在 所有内容 (包括所有图像)加载后触发 - 这可能在页面加载后几秒钟内完成。

相反,请使用 DOM 事件 API,并使用 DOMContentLoaded 事件:

window.addEventListener('DOMContentLoaded', function(e) {

    // page startup code goes here
} );

避免使用 window.onload = ... 的另一个原因是,它将 覆盖 onload 事件的任何先前事件处理程序,而 addEventListener 不会删除任何先前事件处理程序。

Dai
2017-04-06