【问题标题】:Make an array with data linked to a select menu使用链接到选择菜单的数据创建一个数组
【发布时间】:2016-12-05 19:55:01
【问题描述】:

(希望这个问题还没有解决)如果是这样,我很抱歉,请将我链接到解决方案。 (这是我现在参加的 Java 课程的练习,所以我对 Javascript 很陌生。) 我有一个包含旅行目的地的选择菜单。有 4-5 个目的地(巴黎、伦敦、阿姆斯特丹、柏林、纽约..)每个目的地都有一个简短的描述和一个特定的价格。 所以练习说:当有人从选择菜单中点击一个选项时,适当的描述必须出现在文本区域中,并且适当的价格出现在文本输入中。 (这是一些基本的东西)..我知道一些 html 对象是如何工作的,我似乎无法找到使用 select 对象执行此操作的最佳方法。我通过 name 属性和 for 循环使用复选框来做到这一点。也有单选按钮..但是选择选项我被卡住了。我不需要我的练习的解决方案,我只需要一个示例代码,但我理解的东西。 前任: 巴黎 ETC

类似于:对于选定的选项 [i],textarea.value = 与每个旅行目的地相关的描述,文本 input.value = 旅行价格。 我不想要这样的东西:如果 selectedIndex[0]---textarea.value = X 我需要做一些类似目的地数组的事情..trips [i] = new Array []并用价格和描述字符串的var填充trip数组的数组..(我希望我已经清楚了一切我需要 。 谢谢你们。

【问题讨论】:

    标签: javascript arrays select


    【解决方案1】:

    定义一个对象数组,在其中对每个位置和索引进行键值映射。

     var array = [{'key': 0, 'value': 'Paris'},{'key': 1, 'value': 'London'},{'key': 2: 'value': 'Amsterdam'}...]
    

    遍历数组并填充您的选择选项:

     <select>
     {array.map((each)=>{return (<option value= each.key></option>)})}
     </select>
    

    在您的事件处理程序中,将键映射到数组中的值以获取您的文本。

     selectHandler(val){
        let result = array.find((each)=>{return each.key === val});
        var textarea = document.getElementById('textArea');
        textarea.value = result.value;
     }
    

    【讨论】:

    • ??感谢您的回答.. 我了解了一些代码,但那里的一些方法让我吓坏了 :) 地图? array.find(each) 说什么??:) .. 那是 javascript 吗?如果是这样,这意味着我非常基础水平..对不起,我需要更多的东西..易于理解/做..你的代码有意义..有点但不是一切......对不起。
    • 嘿,map 和 find 是非常简单的 Javascript 函数。基本上,array.map 将一个函数作为输入并在数组的每个元素上运行它。然后它返回一个输出数组,其中每个元素都是 f(x),其中 x 是相应的输入数组元素。 array.find 只是将函数作为输入并返回函数计算结果为 true 的第一个元素。在这种情况下,它将返回数组的值 = 所选选项的元素。
    • 你可以在这里学习更多关于javascript函数的知识:developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
    • 哇,那我还处于非常基础的水平,:) 我承认。我就像 100 分中的第 1 级 :)) 我明天会尝试你的解决方案(现在是我的时间晚上),然后回来回答。谢谢!
    • 没关系,我明白了.. textArea.value = description[selectOption.value];
    猜你喜欢
    • 2023-03-09
    • 2019-02-20
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    相关资源
    最近更新 更多