javascript - 使用存储在 "dynamic"数组中的数据构建菜单或组合框

标签 javascript arrays extjs combobox

我想向我的界面添加一个组合框或菜单按钮,其中包含来自数组的数据。数组中的数据并不总是相同,所以我需要按钮是“动态的”。我怎样才能做到这一点?如果数组发生变化,我无法指定模型...

编辑:我正在使用 ExtJS 6,所以我需要能够提供菜单参数:

 menu: [{
     text:'Menu Item 1'
   },{
     text:'Menu Item 2'
   },{
     text:'Menu Item 3'
 }]

示例:

1) 用户选择一个菜单项并单击发送按钮。

2) 根据用户单击的项目的值,创建一个 JavaScript 数组,其中有时包含 2 个字段,有时包含 10 个字段。

3) 这些字段显示在新的菜单按钮或组合框中。

感谢您的帮助!

最佳答案

HTML

<input type="text" name="example" list="exampleList">
<datalist id="exampleList">
    <option value="A">A</option>
    <option value="B">B</option>
</datalist>

Javascript

function generateOptionsFromDynamicArray (arr) {
    // Get the datalist by id, cache option variable
    var datalist = document.querySelector('#exampleList'),
        option;
    // Remove old options
    while( datalist.firstChild ) {
        datalist.removeChild(datalist.firstChild);
    }
    // Loop through array
    for (var i = 0, l = arr.length; i < l; ++i) {
        option = document.createElement('option');
        option.setAttribute('value', arr[i]);
        option.innerText = arr[i];
        datalist.appendChild(option);
    }
}

我创建了一个函数,您可以将该动态数组传递到其中以更新组合框,在本例中我使用的是数据列表。 关于这段代码的几点,您应该添加一个检查以确保 arr 是一个数组或“类似数组”(我正在看您的 typedarrays )。当这些更改发生时,您还应该从 DOM 中删除数据列表,这样您就不会在每次迭代时重新绘制 DOM

我创建了一个 fiddle用于测试。

关于javascript - 使用存储在 "dynamic"数组中的数据构建菜单或组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344255/

相关文章:

ios - array.insert 不会保存元素

网格中的 ExtJS 重复列标题冲突

javascript - 在 Django url 模板标签中获取 javascript 变量的值

javascript - 为什么 'focus-within' 在 Safari 中不起作用

javascript - iOS上的javascriptcore框架可以访问网络吗?

ruby - Ruby 中对象的哈希/数组

javascript - React中array.map和onchange的使用

javascript - 类定义中的 Extjs itemId

javascript - ExtJS 4.0.7 加载完整的 TreePanel

javascript - 在 react-select 中的选项末尾附加一个按钮