我有一个变量,其中包含3个标记名称,这些标记名称之间用“,”字符分隔。我想用.split()函数拆分它们,然后创建并将3个元素附加到文档正文。
<head>
<style>
div { height:500px; width:500px; background:#F00; float:left}
span{display:block; float:right}
</style>
<script type="text/javascript">
var element= div,p,span;
var j=element.split(',')
for(i=0;i<j.length;i++){
var crt=document.createElement(j[i])
}
document.body.append(crt)
</script>
</head>
<body>
</body>
答案 0 :(得分:5)
你的'element'变量需要是一个字符串。你需要使用appendChild()而不是append(),并且appendChild()调用应该在你的循环中:
var element = "div,p,span";
var j = element.split(',');
var crt;
for(var i = 0; i < j.length; i++) {
crt = document.createElement(j[i]);
document.body.appendChild(crt);
}
答案 1 :(得分:1)
这个代码似乎很好,除了2分:
var element = div,p,span
不是有效的陈述,您应该用引号(“)来创建字符串:var element = 'div,p,span';
您应将document.body.append(crt)
语句放在for
循环中,以便每个元素都附加到<body>
。
答案 2 :(得分:1)
试试这个
for(i=0; i<j.length; i++)
{
var crt = document.createElement(j[i]);
document.body.append(crt);
}
答案 3 :(得分:1)
其他人说你需要加载DEMO:
<head>
<style>
div { height:500px; width:500px; background:#F00; float:left}
span{display:block; float:right}
</style>
<script type="text/javascript">
var elements= ["div","p","span"];
window.onload=function() {
for(var crt,i=0, n=elements.length;i<n;i++){
crt=document.createElement(elements[i])
document.body.appendChild(crt)
}
}
</script>
</head>
<body>
</body>
答案 4 :(得分:0)
var tags = "div,p,span".split(",");
for (var i=0, tag; tag = tags[i++];)
document.body.appendChild(document.createElement(tag));
但是,当您执行此代码时,浏览器尚未解析body
标记,因此您应将此代码放在<body>
之后或在加载DOM时运行它({ {1}}事件或onload
(如果支持)。
您还可以使用forEach支持的位置(ES5,有很多垫片,也在我链接的MDN页面中):
DOMContentLoaded
或者,如果您使用任何支持库(jquery,下划线等),它们提供相同的功能。