我想在存储在Javascript中的数组的html体内创建一堆按钮。
<!DOCTYPE>
<html>
<head>
<script>
var listBrand =['LEXUS','AUDI','MAYBACK','FERRARI','TOYOTA'];
//the array
function printBtn() {
for (var i = 0; i < listBrand.length; i++) {
var btn = document.createElement("button");
var t = document.createTextNode(listBrand[i]);
btn.appendChild(t);
document.body.appendChild(btn);
}
}
</script>
</head>
<body>
<div onload="printBtn();">
</div>
</body>
</html>
我希望所有5个按钮LEXUS
,AUDI
,MAYBACK
,FERRARI
,TOYOTA
和FERRARI
显示在正文上当页面加载但我什么都没看到。
我的代码有什么问题。请大家解释一下。任何帮助都是值得欣赏的。
答案 0 :(得分:2)
onload
事件只能在document/body
,frames
,images
和scripts
上使用。
它只能附加到正文和/或每个外部资源。 div
不是外部资源,因此onload
事件不适用于此。
使用以下内容:
<body onload="printBtn();">
而不是
<div onload="printBtn();">
你很高兴。
也许你也应该在这里查看window.onload vs document.onload。
答案 1 :(得分:1)
我认为问题是div
元素没有onload
事件。
您应该将printBtn
方法绑定到window.onload
事件。
我创建了一个有效的jsfiddle供您查看: https://jsfiddle.net/5rq60y0u/1/
答案 2 :(得分:1)
我只是将您的脚本移到正文的末尾,然后您根本不需要担心onload
。如果你有这样的图像和事物,onload
在它们全部加载之前就不会被激活。没理由等待。
此外,您的doctype
错误,head
缺少必需的title
标记。使用W3C Validator验证您的HTML代码是个好主意。
<!doctype html>
<html>
<head>
<title>Test</title>
</head>
<body>
<script>
var listBrand =['LEXUS','AUDI','MAYBACK','FERRARI','TOYOTA'];
function printBtn() {
for (var i = 0; i < listBrand.length; i++) {
var btn = document.createElement("button");
var t = document.createTextNode(listBrand[i]);
btn.appendChild(t);
document.body.appendChild(btn);
}
}
printBtn();
</script>
</body>
</html>
&#13;
答案 3 :(得分:0)
您的代码中有一个错误!
你不能在div标签中使用onload()函数,因为div不是外部资源,而是作为正文的一部分加载,所以onload事件不适用于那里。您可以在body标签中使用onload()函数。
尝试下面的代码,它完美无缺!
var listBrand =['LEXUS','AUDI','MAYBACK','FERRARI','TOYOTA'];
//the array
function printBtn() {
for (var i = 0; i < listBrand.length; i++) {
var btn = document.createElement("button");
var t = document.createTextNode(listBrand[i]);
btn.appendChild(t);
document.body.appendChild(btn);
}
}
<html>
<head>
Created By Muhammad Usman
<script>
</script>
</head>
<body onload="printBtn();">
<div>
</div>
</body>
</html>