无法动态添加选项以进行选择

时间:2011-01-10 14:33:27

标签: javascript jquery html html-select

<!DOCTYPE html>
<html>
    <script type="text/javascript" src="../jquery-1.4.4.min.js" />
    <script type="text/javascript">        
        function click(){
            var select = document.getElementById("select");
            var json = [["Deutsch", "de-DE"], ["US Englisch", "en-US"]];
            json = JSON.parse(json);
            select.options.length = 0;
            for(var i=0; i<json.length; i++) {
                $("#select").append(new Option(json[i][0], json[i][1], false, false));
            }
        }   
    </script>

    <body>
        <select id="select"></select>
        <input type="button" onclick="click()" />
    </body>
</html>

我正在尝试向select元素添加选项,但无济于事。

3 个答案:

答案 0 :(得分:3)

这不起作用,因为它实际上不是JSON数据。这是一个javascript数组:

var json = [["Deutsch", "de-DE"], ["US Englisch", "en-US"]];
   // json = JSON.parse(json);
   //    ^-----Eliminate the second line.

此外,您不应使用click作为方法名称。它会干扰某些浏览器。

工作示例: http://jsfiddle.net/hdX84/

答案 1 :(得分:2)

我会做

var mySel = $('#select')[0];
for(var i=0; i<json.length; i++){
        mySel.append(whatever);
    }

提高效率,因为$('select')总是会搜索DOM。 对于10个条目并不重要,但对于大页面我会尝试从中有效 一开始。

答案 2 :(得分:1)

这是错误的:

var json = [["Deutsch", "de-DE"], ["US Englisch", "en-US"]];
json = JSON.parse(json);

你没有JSON。你有一个数组数组。如果用单引号括起来(即如果它是一个字符串),它只是JSON。

var data = [["Deutsch", "de-DE"], ["US Englisch", "en-US"]];
for(var i=0; i<data.length; i++){
    $("#select").append($('<option />',{value: json[i][1], text: json[i][0]}));
}