javascript - 函数未定义错误,但没有导致此错误
问题描述
我在 Chrome 和 Edge 开发控制台中测试了以下 JavaScript 很多次,它说所有函数都是未定义的。但是,它并没有告诉我这是什么原因。这是代码(我认为错误可能在toggleMenu中,因为我刚刚添加了这个)。网站是 tactiletimes.org。我也尝试将 const 放在 list 之前,但这只会引发意外的识别器错误
list = "<ul><li><a href="about">About Us</a></li><li><a href="subscribe">Subscribe for free</a></li><li><a href="issues.html">Issue Archive</a></li><li><a href="contribute">Contribute to Issue 4</a></li><li><a href="contact">Contact us</a></li><li><a href="#menu">View full menu</a></li></ul>";
function clearCookies(){
deleteAllCookies();
document.getElementById("cookieButton").innerHTML = "Successfully cleared data"+document.cookie
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0){ return c.substring(nameEQ.length,c.length)};
}
return null;
}
function deleteAllCookies(){
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
function changeBodyColor(color){
document.cookie = "bgColor="+color;
document.getElementById("footer").style.color = "yellow";
changeLinkColor("yellow")
document.body.style.backgroundColor = color;
if (color == "white"){
document.body.style.color = "black";
changeLinkColor("blue");
}
else if (color == "black"){
document.body.style.color = "white";
}
else if (color == "yellow"){
document.body.style.color = "black";
changeLinkColor("blue");
document.getElementById("footer").style.color = "red";
}
else if (color == "purple"){
document.body.style.color = "white";
}
else if (color == "blue"){
document.body.style.color = "white";
}
else if (color == "green"){
document.body.style.color = "black";
changeLinkColor("blue");
document.getElementById("footer").style.color = "red";
}
else if (color == "orange"){
changeLinkColor("blue");
}
}
function changeLinkColor(color){
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++){
links[i].style.color = color;
}
}
function restoreBgColor(){
if (!readCookie("bgColor") == null){
changeBodyColor(readCookie(bgColor));
}
}
function toggleMenu(){
if (document.getElementById("topmenu").innerHTML != ""){
document.getElementById("topmenu").innerHTML = "";
}
else{
document.getElementById("topmenu").innerHTML = list;
}
}
</script> ```
解决方案
我去了 tactiletimes.org 来查看这个 bug。
这条线做到了:
list = '<ul><li><a href="about">About Us</a></li><li><a href="subscribe">Subscribe for free</a></li><li><a href="issues.html">Issue Archive</a></li><li><a href="contribute">Contribute to Issue 4</a></li><li><a href="contact">Contact us</a></li><li><a href="#menu">View full menu</a></li></ul>'';
只需删除最后一个单引号(没有用),它就可以了。
var list = '<ul><li><a href="about">About Us</a></li><li><a href="subscribe">Subscribe for free</a></li><li><a href="issues.html">Issue Archive</a></li><li><a href="contribute">Contribute to Issue 4</a></li><li><a href="contact">Contact us</a></li><li><a href="#menu">View full menu</a></li></ul>';
现在您知道为什么在重做 qoutes 后会出现问题。
推荐阅读
- wordpress - WordPress 301 重定向所有页面
- adb - adb install --abi 在 linux 模拟器中不起作用
- android - 为 Material Design 的 TextInputLayout 设置 app:textColorHint 时资源链接失败
- bootstrap-table - Bootstrap-Table 在创建表时添加默认过滤器
- c# - WPF:为什么我的线程只更新一些值
- arduino - arduino esp32 +ov7670 相机想连接网络但失败
- c++ - c++中带参数的类的继承
- javascript - 我如何在 React 中使用 PHP 会话?
- mysql - Mysql:用户的计数器查询
- javascript - JS 上的电子邮件验证器模式