【问题标题】:javascript/jquery - dynamically add data by id to an arrayjavascript/jquery - 通过 id 动态地将数据添加到数组中
【发布时间】:2013-06-09 18:49:39
【问题描述】:

尝试将简历创建者构建为 codeacademy 的项目。

我正在使用一个按钮将用户的输入“保存”到一个数组中,以便以后可以将其附加到简历中。

但是,我无法将数据“保存”到数组中。我在 stackoverflow 上查看了类似的问题,但我终生无法弄清楚我做错了什么。

这是我的fiddle

我遇到问题的特定代码块:

$('#experiencesave').click(function(){
for (var i = 0; i < jobs; i++){
jobtitle.push = $('#jobtitle'+i).val();
}
$('#morejobs').append(jobtitle);
});

【问题讨论】:

    标签: javascript arrays loops dynamic resume


    【解决方案1】:

    嗯,.push [MDN] 是一个必须调用的函数:

    jobtitle.push($('#jobtitle'+i).val());
    

    作为替代解决方案,您可能希望使用.map 来收集值,而不是使用for 循环:

    var jobtitle = $('input[id^=jobtitle]').map(function() {
        return this.value;
    }).get();
    

    不过,我认为没有理由给每个输入元素一个 ID。就给他们上课吧。这使得以后批量处理它们变得更容易一些。例如。那么选择器可能只是$('input.jobtitle')

    【讨论】:

    • 谢谢。我不敢相信我忘记调用 .push(),而是使用您的地图功能,因为它有效,哈哈。我不明白 .map() 是如何工作的……你能给我解释一下还是给我一个面向初学者的教程?
    • map 来自函数式编程。你给它一个值列表并将其 map(转换)为不同值的列表。值的转换方式由函数定义(作为参数传递给map 函数)。在这个答案中,我们有一个元素列表 ($('input[id^=jobtitle]')),并将每个元素映射到其 .value 属性 (function() { return this.value; }) 的值。您还可以查看 Wikipedia (en.wikipedia.org/wiki/Map_(higher-order_function)) 或 jQuery 文档:api.jquery.com/map
    • 好吧,对不起,我还在学习,但听起来我们要遍历一组数据 - 对每条数据应用一个函数,然后使用应用函数创建一组新数据。几件我不明白的事情......在上面的代码中你把'input[id^=jobtitle] 映射到每个输入与id jobtitle?该代码中的插入符号 (^) 是什么意思?
    • [...^=...]attribute-starts-with 选择器:api.jquery.com/attribute-starts-with-selector。这是所有选择器的列表:api.jquery.com/category/selectors。是的,它会选择 ID 以jobtitle 开头的每个输入元素。您对地图功能的理解似乎也是正确的。
    • 太棒了!非常感谢。我正在寻找,我所能找到的只是 ^ 是一个没有意义的 XOR 逻辑运算符。
    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多