自动填充选择框

Posted

技术标签:

【中文标题】自动填充选择框【英文标题】:Auto populate select box 【发布时间】:2012-06-03 18:17:30 【问题描述】:

我正在尝试使用 Jquery 和 javascript

我做了一些搜索,发现了this question,并遵循了所选答案的建议。

我最初设置了一个jsFiddle来说明我的问题:http://jsfiddle.net/GJdBR/

在收到关于以下答案的一些建议后,我创建了一个新的 jsfiddle 并且它起作用了。 http://jsfiddle.net/2UbqP/

但是,在我的计算机上,我使用的是全新安装的 Windows 7,到目前为止,我所做的只是安装 chrome、apanta 和 xampp。我去 localhost/website 并且该站点出现了,但是 js 功能不起作用,即使我证明代码是正确的,因为上面的 jsfiddle,选择框也没有填充 var。

我收到一个错误:

$(document).ready(function() 
    populateTranslationOptions();
);

错误显示:

Uncaught SyntaxError: Unexpected token ILLEGAL

【问题讨论】:

【参考方案1】:

您的代码中有几个问题。检查这个

function populateTranslationOptions ()

    var translationOptions = ["Egyptian Hieroglyphs", "Al Bhed (Final Fantasy X)", "Futurama"];
    $.each(translationOptions ,function(i,value)    
        $('#translationOptions')
            .append($("<option></option>")
            .attr("value",value)
            .text(value)); 
    );


$(document).ready(function() 
   populateTranslationOptions();
 );​

代码中的问题:

$.each 语法错误

$.each(translationOptions (value))

应该是

$.each(translationOptions ,function(i,value) 
你没有调用函数populateTranslationOptions;没有调用函数 populateTranslationOptions(); 会。

Working Fiddle

【讨论】:

127.0.0.1/Sites/Personal%20Website/fun-translator.php 的页面运行了来自code.jquery.com/jquery-latest.min.js 的不安全内容。 Uncaught SyntaxError: Unexpected token ILLEGAL funtranslator.js:14 你的 funtranslator.js 第 14 行有什么? 在 jsfiddle 中找到的 javascript 同样的代码在这里运行良好,joynag.net/demos/fun,你能把那个页面的源代码复制到fun-translator.php 并检查它是否适合你吗? 如果我上传它就可以工作,这就是为什么在问题中我想知道这是否与我的 xammp 安装有关【参考方案2】:

对于数组,$.each 是不必要的。您可以使用简单的循环。如下 -

function populateTranslationOptions()

    var translationOptions = ["Egyptian Hieroglyphs", "Al Bhed (Final Fantasy X)", "Futurama"];
    for (var i = 0; i < translationOptions.length; i++) 
        $('#translationOptions')
            .append('<option value="' + translationOptions[i] + '">' + translationOptions[i] + '</option>');
    ;


$(document).ready(function() 

   populateTranslationOptions();
 );​

【讨论】:

【参考方案3】:
$.each(translationOptions, function (index, value)    
        $('#translationOptions')
            .append($("<option></option>")
            .attr("value",value)
            .text(value)); 
    );

你试过了

$.each(translationOptions, (value) )

错了,因为正确的结构是$.each(mapData, callbackFunction),这里mapData表示Object或者Array。

下一个问题是:

 $(document).ready(function() 
   populateTranslationOptions;
 );​

应该没有

$(document).ready(function() 
   populateTranslationOptions(); // you missed () here
 );​

请注意,populateTranslationOptions 不会调用函数,因此要调用函数,您需要 populateTranslationOptions()

DEMO

一个重要提示

函数后面的()表示执行函数本身, 返回它的价值。没有它,您只需拥有该功能,它可以 作为回调传递很有用。

相关参考文献:

$.each()

call javascript function with/without parenthesis

【讨论】:

以上是关于自动填充选择框的主要内容,如果未能解决你的问题,请参考以下文章

jquery ui 选择菜单自动填充

如何从用于使用 Selenium 填写表单的 chrome 自动填充框中选择值

根据下拉值自动填充文本框

访问级联组合框自动填充当留下一个选项时

excel怎_设定可以根据数字自动变填充颜色??

Jquery Bootstrap Datepicker 禁用过去日期并且不自动填充输入框