js未捕获的ReferenceError

时间:2018-10-03 06:32:29

标签: javascript

此问题涉及一些在一个网站上有效而在另一个网站上无效的js。完全相同的代码。

此代码的目的是在移动设备上(或减小浏览器窗口大小时)用fa fa-bars菜单替换顶部导航。

它可以在www.motorsport-tech.com上运行。但是,它会在www.skyforestinn.com上生成“未捕获的ReferenceError:未定义myFunction”。

我将此脚本放在close body标签之前:

<script>
    function myFunction() {
        var x = document.getElementById("navDemo");
        if (x.className.indexOf("w3-show") == -1) {
            x.className += " w3-show";
        } else {
            x.className = x.className.replace(" w3-show", "");
        }
    }

    // When user clicks anywhere outside of the modal, close it
    var modal = document.getElementById('ticketModal');
    window.onclick = function(event) {
      if (event.target == modal) {
        modal.style.display = "none";
      }
    }
</script>

并且我通过以下方式在html中称呼它:

onclick =“ myFunction()”

对于javascript来说还很陌生,并且阅读了大约20个针对同一问题的回复没有帮助,因为该代码在一个网站上有效,而在另一个网站上无效。很混乱。有人可以告诉我我做错了什么(除了首先不知道我在做什么)还是将我指向正确的方向?

2 个答案:

答案 0 :(得分:3)

这是您的脚本,从网站上逐字记录:

// Used to toggle the menu on small screens when clicking on the menu button        function myFunction() {         var x = document.getElementById("navDemo");         if (x.className.indexOf("w3-show") == -1) {             x.className += " w3-show";          } else {                x.className = x.className.replace(" w3-show", "");          }       }       // When the user clicks anywhere outside of the modal, close it     var modal = document.getElementById('ticketModal');     window.onclick = function(event) {        if (event.target == modal) {          modal.style.display = "none";         }     }

这是一行以注释开头的内容,因此它绝对不起作用。

改为正确格式化,它应该可以正常工作:

<script>
// Used to toggle the menu on small screens when clicking on the menu button
function myFunction() {
  var x = document.getElementById("navDemo");
  if (x.className.indexOf("w3-show") == -1) {
    x.className += " w3-show";
  } else {
    x.className = x.className.replace(" w3-show", "");
  }
}
// When the user clicks anywhere outside of the modal, close it 
var modal = document.getElementById('ticketModal');
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
</script>

此外,如果可能的话,我建议将脚本放在单独的文件中,以使HTML与JS分离,并简化编辑,例如

<script src="myscript.js" defer></script>

然后,当您打开myscript.js时,将更容易发现此类问题。

答案 1 :(得分:1)

一个站点进行了优化,删除了所有换行符,这意味着任何单个行注释都将注释掉以下所有代码

如果要修复它而不跟踪设置以除去换行符,请改用多行注释graphics_resource_render_text_ext()

/* */