Javascript window.onLoad元素内容不变

时间:2013-11-15 23:37:45

标签: javascript html

我在更改元素内容时遇到问题

HTML代码:

<script type="text/javascript">
// Javascript
function promptLogin()
{
    var person=prompt("Please enter your name","User");

    if (person!=null)
    {
        x="Hello " + person + ", welcome to JBA Limited";
        document.getElementById("topBar_message").innerHTML=x;
    }
}
</script>
</head>

<body>

<script>window.onLoad = promptLogin()</script>
<header>
    <div class="bul_header_topBar">
        <p id="topBar_message">Welcome to JBA Limited</p>
    </div>

我不确定问题,但我担心问题是在加载网页之前调用该函数,因此不存在id。无论是那个拼写/定义错误的东西。

3 个答案:

答案 0 :(得分:1)

您需要从()

中删除promptLogin

编辑:哦是的,它是onload,而不是onLoad

更大的编辑:

window.onload等待你的DOM加载,所以它不可能不存在。这只是您尝试传递已经运行的方法的情况。 ()末尾的promptLogin表示“window.onLoad等于此函数的返回值”,而不是您要查找的内容(“window.onLoad等于此函数” )。

此外,曾经有一段时间浏览器对这些回调的区分不敏感,但现在却是。它是window.onload

答案 1 :(得分:0)

我的猜测是你的dom尚未加载,所以当你试图“获取”你的元素时它还没有加载/那里。

您可以添加我建议的内容,也可以保留所有内容,除非删除onload等,然后将该调用(带脚本标记)放在页面的最底部。

 //at the bottom of your page within script tags
 <script>promptLogin()</script>

将此代码放在你的dom的底部(下)。

  1. 将以下代码添加到您的页面中,位于脚本标记的底部。

  2. 删除此窗口.onLoad = promptLogin()

    (()的函数     {        var person = prompt(“请输入你的名字”,“用户”);

       if (person!=null)
          {
              x="Hello " + person + ", welcome to JBA Limited";
              document.getElementById("topBar_message").innerHTML=x;
          }
    

    })()

答案 2 :(得分:0)

el_bob说的是正确的,但不仅仅是剥离()我会使用匿名函数语法,因为它更常见,因此更具可读性:

window.onload = function(){
    promptLogin();
}

此语法的主要优点是您可以进行多次调用:

window.onload = function(){
    promptLogin();
    anotherFunction();
    thirdFunction();
}