2012-03-23 74 views
1

我有一个变量,它包含3个用“,”字符分隔的标签名称。我想用.split()函数将它们分开,然后创建并追加3个元素到文档主体。javascript document.createElement函数?

<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

请适当缩进您的代码 – Tom 2012-03-23 10:01:42

+3

元素需要是一个字符串的开始。 – 2012-03-23 10:03:53

+0

是最终结果应该是'

'或'​​'? – Alnitak 2012-03-23 10:06:39

回答

4

你的 '元素' 变量必须是一个字符串。您需要使用的appendChild(),而不是追加(),以及使用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); 
} 

http://jsfiddle.net/infernalbadger/wEBqY/1

1

此代码看起来很好,但2点:

  1. var element = div,p,span是不是一个有效的语句,你shoudl包报价()创建一个字符串:var element = 'div,p,span';

  2. 您应该将document.body.append(crt)语句放入您的for循环中,以便每个元素都将追加到<body>

1

试试这个

for(i=0; i<j.length; i++) 
{    
    var crt = document.createElement(j[i]); 
    document.body.append(crt); 
} 
+0

无法正常工作 – Carlos 2012-03-23 10:06:49

+0

这不起作用,因为您的代码中存在其他问题,例如'var element = div,p,span;'应该是用引号括起来的字符串。 – slash197 2012-03-23 10:08:59

1

什么人说PLUS你需要这样做的onload 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> 
0
var tags = "div,p,span".split(","); 

for (var i=0, tag; tag = tags[i++];) 
    document.body.appendChild(document.createElement(tag)); 

然而,body标签还没有被浏览器,当你执行这个代码解析的,所以你应该在0123之后把这个代码或在装入DOM时运行它(onload事件或DOMContentLoaded如果支持)。

您也可以使用forEach支持地方(ES5,有大量的垫片,也是在MDN页我联系):

var tags = "div,p,span".split(","); 

tags.forEach(function(tag) { 
    document.body.appendChild(document.createElement(tag)); 
}); 

或者,如果你使用任何支持库(jQuery的,下划线等),它们提供等同的功能。