2016-05-06 7 views
-4

私はJavaScriptのループを持っています。私はechoをPHPで使用した場合のように、そこにHTMLコードを表示したいと考えています。JavaScriptのループ内でコードを印刷するには

<div class="colorpick"> 
    <script language="javascript"> 
     for (var i = 0; i < 2; i++) { 
     domument.write('<div class="pick" style="background-color:'+ list[i] + '" onclick="hello(this.style.backgroundColor);"></div>'); 
     } 
    </script> 
</div> 
+0

いいえ、私はすべてのエラーを取得できませんでした。 –

+1

エラーはありません質問だけでデモ? – guradio

+3

'domument.write'ではなく' document.write'です。そして、はい、あなたは**エラーを受けていました。 Webコンソールを開きます。 –

答えて

0
try{ 
    var strContent = ""; 
    for(var i=0; i<2; i++) { 
     strContent += "<div class=\"pick\" style=\"background-color:" + list[i] + "\" onclick=\"hello(this.style.backgroundColor);\"></div>"; 
    } 
    document.write(strContent); 
} catch(ex) { 
    alert(ex); 
} 

例外ハンドラは、他の何かが間違っている場合は、あなたが知っているようにただそこにある:これは私がこれまでにしようとしているものです。

+0

ありがとうございます。魅力のように働いた。 –

+2

ちょうどそれのまわりでエラーハンドラを盲目的に投げることは解決策ではありません。解決策は実際そこに埋もれていた。それは単純な誤植である。 –

+0

問題を修正するのではなく、何がうまくいかないのかを示すために例外ハンドラが追加されました。 – SPlatten

1

元のコードには誤植がありましたが、これは機能しませんでしたが、jQueryを使用して効率的に行うことができます(質問にはjQというタグが付いています)。リストをループして追加しますHTMLのdivへ - 各divに色分けされたbg-クラスを追加しました。

これにより、自分が持っていたインラインスタイルではなく、divのスタイリングに対する外部CSSアプローチが可能になります。可能ならば、CSSをHTMLから守るほうがずっと良いです。 javascriptと同じです.HTMLから削除し、イベントハンドラを介してスクリプトに追加すると、コード構造が改善されます。

$(document).ready(function(){ 
 
    var str=""; 
 
    var list=["red","green","blue"]; 
 
    
 
    for (i = 0; i < list.length; i++) { 
 
     str += "<div class='pick bg-"+ list[i] +"'>Click Me</div>"; 
 
    } 
 
    
 
    $('.colorpick').append(str); 
 

 
    $('.pick').on('click',function(){alert($(this).css('background-color'))}); 
 

 
})
.bg-red{background:red} 
 
.bg-green{background:green} 
 
.bg-blue{background:blue}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="colorpick"></div>

関連する問題