javascript - 如何将数据保存在onchange脚本的html中?

标签 javascript html

我有两个选择。第二个的值/文本将根据第一个选择中选择的内容而有所不同。

我将把 onchange 函数链接到第一个选择。但我不知道

  • 如何为 html 中的 onchange 函数保存数据
  • 如何在 JavaScript 代码中更改第二个选择 html 定义(文本/值 + 选项数量)

请注意,我不想使用任何 JavaScript 框架

最佳答案

1)我假设您正在寻求有关如何对第二个选择输入的数据进行编码的建议。我建议使用 JavaScript 来存储第一个选择的可能值到第二个选择要使用的值的映射,以便您可以直接对其进行索引,例如:

// Assume "select1" can have option values "English" and "Spanish".
var select2data = {
  'English': [['One', 1], ['Two', 2], ['Three', 3]],
  'Spanish': [['Uno', 1], ['Dos', 2], ['Tres', 3]]
};

这个策略非常简洁,但需要以编程方式生成 JavaScript。如果你确实想使用纯 HTML,那么你可以有一个嵌套的 DIV 结构并根据需要解析它,例如:

<div id="select2data" style="display:none">
  <div id="English">
    <div><div>One</div><div>1</div></div>
    <div><div>Two</div><div>2</div></div>
    ...
  <div id="Spanish">
  ...
<script type="text/javascript">
  var s2d = document.getElementById("select2data")
    , select2data = {};
  for (var i=0; i<s2d.children.length; i++) { // Each of "id=English", etc.
    var data=s2d.children[i], opts=[];
    for (var j=0; j<data.children.length; j++) {
      opts.push(new Option(data.children[j].children[0].firstChild,
                           data.children[j].children[1].firstChild));
    }
    select2data[data.id] = opts;
  }
</script>

2) 现在,设置 select2 的选项可以通过从 select1 的值中查找数据,将它们编码为 DOM Option 对象,然后将它们添加到 select1 来完成:

var sel1 = document.getElementById('select1')
  , sel2 = document.getElementById('select2');
sel1.onchange = function() {
  var os = select2data[sel1.value]; // Get the options required by select1.
  if (os) {
    sel2.options.length = 0; // Clear the options for select2.
    for (var i=0; i<os.length; i++) {
      var o = new Option(os[i][0], os[i][1]);
      try { // Add each option, allowing for browser differences.
        sel2.add(o);
      } catch (ex) {
        sel2.add(o, null);
      }
    }
    sel2.selectedIndex = 0;
  }
  return true;
};

请注意,这一切都未经测试,并且有很大的改进空间,但应该说明这个想法。

关于javascript - 如何将数据保存在onchange脚本的html中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268046/

相关文章:

javascript - 如何使用绝对位置定位元素?

javascript - 如何在 Angularjs 中比较国家字符串值与下拉值?

javascript - ng-show 与 ng-hide 的性能对比

html - Bootstrap : Content in middle of the page

javascript - 如何在点击时更改div中的内容?

html - 我怎样才能摆脱网站顶部和导航栏之间的开放空间( Bootstrap )

html - Snap.svg 动画

javascript - 如何桥接 JavaScript(参差不齐)数组和 std::vector<std::vector<T>> 对象?

html - 文本阴影在 IE9 中不工作,使用 css?

javascript - 如何从数组中删除子数组中具有相同元素的所有组合?