2011-01-10 52 views
1
<!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> 

我想添加选项到选择元素,但无济于事。问题动态添加选项来选择

+0

既然你真的没有使用jQuery除了那一行,为什么不直接JS? – hunter 2011-01-10 14:43:29

回答

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/

+0

感谢您的工作示例!它在jsfiddle上工作,但是当我逐字复制代码时,它不起作用。这里还有其他问题吗?我使用chrome来测试它。 – lowerkey 2011-01-10 14:44:48

+0

@Joshua:您是否记得在内联`onclick`属性中更改方法的名称?在示例中,我将其从`click`改为`click_me`,因为在某些浏览器中使用`click`会失败。 – user113716 2011-01-10 14:46:09

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]})); 
} 
2

我愿意为更高的效率做

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

,因为$( '选择')总是通过DOM搜索。 对于10个条目无关紧要,但对于大型网页,我会尝试从 开始进行高效处理。