0
function test()
{
var formHTML ="";
var frmid ="test123";

var options = ["Test1", "Test2", "Test3", "Test4", "Test5"]
formHTML += "<select id='" + frmid + ">";

console.log(options);

for ( i = 0; i < options.length; i++) {
    var temp = options[i];
    var temp2 = "<option value='" + temp + "'>" + temp + "</option>";
    console.log(temp2);
    formHTML += temp2;
}
formHTML += "</select>";
console.log(formHTML); 
document.getElementById("injected").innerHTML+=formHTML;

}

上記は私のページでselect要素を作成する関数です。この関数を呼び出すと、非常に奇妙な問題が発生します。オプションtest2、test3、test4、test5のみが表示され、1つは表示されません...

console.logを使用してformHTMLを印刷すると、次のように表示されます。

<select id='test123><option value='Test1'>Test1</option>
<option value='Test2'>Test2</option>
<option value='Test3'>Test3</option>
<option value='Test4'>Test4</option>
<option value='Test5'>Test5</option>
</select> 

しかし、コードを実行してソースコードを見ると、HTML要素が正しくありません。最初の要素は次のようになります。

 <option value='test1'> Test1

クローズオプションタグがありません、

コードのデバッグと変更を試みましたが、この問題により混乱しました。

何か足りないものがありますか?これについてもっと良い方法はありますか?速度の理由から、DOMを操作する前に、すべてを1つの文字列に格納しようとしています。すべての助けに感謝します、ありがとう

4

1 に答える 1

4

この行にエラーがあります

formHTML += "<select id='" + frmid + ">";

これをに変更します

formHTML += "<select id='" + frmid + "'>";
于 2012-07-03T14:23:45.253 に答える