此问题涉及一些在一个网站上有效而在另一个网站上无效的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个针对同一问题的回复没有帮助,因为该代码在一个网站上有效,而在另一个网站上无效。很混乱。有人可以告诉我我做错了什么(除了首先不知道我在做什么)还是将我指向正确的方向?
答案 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()
/* */