我在更改元素内容时遇到问题
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。无论是那个拼写/定义错误的东西。
牛
答案 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的底部(下)。
将以下代码添加到您的页面中,位于脚本标记的底部。
删除此窗口.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();
}