Проблема в динамическом добавлении параметров для выбора - PullRequest
1 голос
/ 10 января 2011
<!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>

Я пытаюсь добавить опции к элементу выбора, но безрезультатно.

Ответы [ 3 ]

3 голосов
/ 10 января 2011

Это не сработает, потому что на самом деле это не данные JSON. Это массив javascript:

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

Кроме того, вы не должны использовать click в качестве имени метода. Это будет мешать в некоторых браузерах.

Рабочий пример: http://jsfiddle.net/hdX84/

2 голосов
/ 10 января 2011

я бы сделал

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

для большей эффективности, потому что $ ('select') всегда будет искать через DOM. Не имеет значения для 10 записей, но для больших страниц я постараюсь сделать эффективный из начало.

1 голос
/ 10 января 2011

Это неправильно:

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]}));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...