为什么onload事件不引用表单元素?

时间:2017-12-13 00:50:40

标签: onload document-body

我继承了一个遗留的Web应用程序,需要更新才能使用一组新的资产检查照片。 我的问题是body标签有一个onload事件,它引用并填充现有应用程序中的select表单元素(cChg)。当我获取html页面的副本并编辑它以引用新的网络共享时,onload事件不会引用select表单元素并返回空引用。

我不明白为什么现有的Web应用程序会正确引用select表单元素,但是在编辑之后运行html页面不会。

我在这里缺少什么?



<HTML>

<head>
  <script type="text/javascript">
    function imageLoad() {
      dts = "Capture Date/Time: XXX";
      document.getElementById('mdt').innerHTML = dts;
      var list = document.getElementById('cChg');
      val = 0;
      str = "0m to 100m";
      list.options[list.options.length] = new Option(str, val);
    }
  </script>
</head>

<body onload="imageLoad();">
  <div id="imgbox"></div>
  <form name="frmCtrls">
    <table width="970px">
      <tr>
        <td>
          <button type="button" name="cBtnPlay" title="Play"></button>
          <button type="button" name="cBtnStop" title="Stop"></button>
        </td>
        <td align="right">
          <select name="cSpeed">
                        <option value="900">Very Slow</option>
                        <option value="700">Slow</option>
                    </select>
          <select name="cChg">
                        <option value="0" selected="selected">Please Select</option>
                    </select>
        </td>
      </tr>
    </table>
  </form>
  <table width="970px">
    <tr>
      <td>Click the image</td>
    </tr>
    <tr>
      <td><span id="mdt"></td>
        </tr>
    </table>
</body>
</HTML>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

这里的问题是select元素只有一个name参数,而不是id参数。

当我使用document.getElementById('cChg');引用select元素时,找不到具有该id的元素并返回null。

解决方法是在select元素定义中添加一个id参数,即select id ='cChg'&gt ;.

我仍然不明白为什么现有的Web应用程序正确引用了select元素(没有id参数),但我有一个解决方案,可以进行我需要的编辑并更新html页面。