onclick函数在IE中返回undefined,在Chrome和Firefox中运行正常

时间:2017-05-08 23:56:39

标签: javascript html internet-explorer

我有一个像这样的HTML页面(简化)

<html>
  <head>
    <style>
...
    </style>
    <script type ="text/javascript">
      function foo()
      {
...
      }
    </script>
  </head>
  <body>
    <input type="button" value="ClickMe" onClick="foo()"/>
  </body>
</html>

这适用于Chrome,Firefox和Safari,但是当我使用IE时,当我点击它时,它会返回&#39; foo&#39;在控制台日志中未定义。 我尝试移动所有部分但仍然遇到了同样的问题。 任何提示?

编辑1:这里有更多我的代码

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>
    <meta content="utf-8" http-equiv="encoding"/>
    <title>My Title</title>

    <script type="text/javascript">
      function handleBrowseClick()
      {
        var fileinput = document.getElementById("browse");
        fileinput.click();
      }

      function handleChange()
      {
        var fileinput = document.getElementById("browse");
      }

      function addListener()
      {
        document.getElementById('browse').addEventListener('change', handleFileSelect, false);
      }

      function handleFileSelect(evt)
      {
        var files = evt.target.files;

        var output = [];
        for (var i=0 ; f=files[i] ; i++) {
          var reader = new FileReader();
          reader.onload = (function(theFile) {
            return function(e) {
              <more JS code here>
            };
          })(f);
          reader.readAsBinaryString(f);
        }
      }
    </script>
  </head>
  <body>
    <input type="file" id="browse" name="fileupload" style="display: none" onChange="handleChange();"/>
    <input type="button" value="ClickMe" id="fakeBrowse" onClick="handleBrowseClick();"/>
    <output id="list"></output>
  </body>
</html>

<script type="text/javascript">
  window.onload = addListener();
</script>

2 个答案:

答案 0 :(得分:0)

由于这是我的查询在Google中的第一个匹配项,但未给出实际答案:

我将参考在哪里找到实际的解决方案: onclick event in anchor tag not working in IE

指出IE是愚蠢的,需要您更改:

onClick="somefunc();"

onClick="javascript:somefunc();"

答案 1 :(得分:0)

我刚刚遇到了同样的问题。

对我来说,这是因为 HTML 有一些语法错误,Chrome(甚至 Microsoft Edge)不会抱怨,但 Internet Explorer 会抱怨。

一旦我修复了那些未定义的函数错误就消失了。