0

我是 Javascript 初学者,我正在尝试让一些简单的代码工作。我添加了一个片段作为检查,以确保 Javascript 在页面中正常工作,它确实如此。它只是将一些文本从蓝色变为红色。

第二段代码应该隐藏 a <div>,或者根据所选值显示它。它不起作用有人能指出我正确的方向吗?感谢您的任何建议。

<!DOCTYPE html>
<html>
<head>
  <title>getElementById example</title>
  <script>
  function changeColor(newColor) {
    var elem = document.getElementById("para1");
    elem.style.color = newColor;
  }
  </script>

  <script>
       // EXPAND
    function Hide(elementid){
        document.getElementById(elementid).style.display = 'none';
    }

    function Show(elementid){
        document.getElementById(elementid).style.display = '';
    }
  </script>

</head>
    <body>
        <p id="para1">Some text here</p>
        <button onclick="changeColor('blue');">blue</button>
        <button onclick="changeColor('red');">red</button>

        <div id="one">ONE</div>
        <div id="two">TWO</div>

        <select>
            <Option value="javascript:Show('one');javascript:Hide('two')">one</option> 
            <Option value="javascript:Hide('one');javascript:Show('two')">two</option>
        </select>
    </body>
</html>
4

2 回答 2

6

value属性不运行 JavaScript。

您需要将一个change事件绑定到 select 元素,然后查看选定的值以确定显示或隐藏哪一个。

例如

<div id="one">ONE</div>
<div id="two">TWO</div>
<div id="three">THREE</div>

<select>
    <option>one
    <option>two
    <option>three
</select>

<script>
  function show(id) {
    document.getElementById(id).style.display = '';
  }
  function hide(id) {
    document.getElementById(id).style.display = 'none';
  }
  function whichDiv(event) {
    var select = event.target;
    var options = select.options;
    for (var i = 0; i < options.length; i++) {
      var option = options[i];
      if (option.selected) {
        show(option.value);
      } else {
        hide(option.value);
      }
    }
  }

  document.querySelector('select').addEventListener('change', whichDiv);
</script>
于 2013-03-18T14:23:27.290 回答
0

我认为你应该使用 blockdocument.getElementById(elementid).style.display = 'block';

于 2013-03-18T14:22:36.310 回答