2012-03-23 20 views
1

私は "、"文字でお互いに分離された3つのタグ名を含む変数を持っています。 .split()関数でappartを分割し、3つの要素を作成してドキュメント本文に追加したいと考えています。javascript document.createElement function?

<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

+3

要素は開始文字列である必要があります。 「

」または「​​」となる最終結果は –

+0

ですか? – Alnitak

答えて

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

+0

'var element = div、p、span; 'のようなコードに他の問題があるので、動作しません。'は引用符で囲まれた文字列でなければなりません。 – slash197

1

PLUSあなたはこのonloadイベントDEMOを実行する必要があります。あなたは、このコードを実行しているときは、0123の後に、このコードを配置する必要がありますので

<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タグは、ブラウザによってはまだ解析されていませんを実行するか、DOMがロードされたときに実行してください(onloadイベントまたはサポートされている場合はDOMContentLoaded)。あなたが任意のサポートライブラリ(jQueryのを使用している場合は、アンダースコア、

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

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

または:

ます。また、サポートされていforEachを使用することができます(ES5、そこもMDNページに私がリンクされ、シムがたくさんあります)等)は同等の機能を提供する。

関連する問題