Javascript条件语句会导致其他函数停止工作
Javascript conditional statements cause other functions to stop working
编辑
我最初把这个问题说成是浏览器检测导致了我的问题,但它只是由不正确的语法引起的。
- 确保关闭所有括号(它们应该总是成对出现!)
- 给你的代码一些空间(这样会更容易发现错误!)
- 通过将混乱的条件表达式移动到变量中来清理
if
-语句 - 使用语义(理想情况下是明确的)变量名——这样可以更容易地理解代码要做什么
例如,以下内容:
const layoutStyles = document.querySelector('#layoutStyles');
const testElement = document.createElement('div');
let supportsFlex = testElement.style.flex !== undefined;
let supportsFlexFlow = testElement.style.flexFlow !== undefined;
if (supportsFlex && supportsFlexFlow) {
layoutStyles.setAttribute('href', 'flex-layout.css');
} else {
layoutStyles.setAttribute('href', 'float-layout.css');
}
在技术上等同于:
const cond = document.querySelector('#cond');
const tstEl = document.createElement('div');
if (tstEl.style.flex!==undefined&&tstEl.style.flexFlow!==undefined)cond.setAttribute('href','flex-layout.css');
else cond.setAttribute('href','float-layout.css');
但后者更难阅读和理解。因此,调试和重构也更加困难,而且更容易意外引入错误。
正如撰稿人很久以前在回答中所写的那样,学习语言基础知识很重要;先爬后走,先走后跑!
出于某种原因,javascript的这一部分屏蔽了我之前编写的所有其他函数。如果我把它拿出来,它们就会工作,当我把它放回原处时,它们就会停止工作。
如果有人能发现问题所在,请告诉我!我真的不太擅长JS,所以我甚至不能100%确定我在这里做什么。
嗯,我用这个作为参考;http://www.javascriptkit.com/javatutors/navigator.shtml
这是我的代码:
//4th batch shows a warning box upon finding a visitor with an outdated browser
if (/Firefox['/'s]('d+'.'d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number
if (/MSIE ('d+'.'d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
if (/Opera['/'s]('d+'.'d+)/.test(navigator.userAgent)){ //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);
var oprversion=new Number(RegExp.$1) // capture x.x portion and store as a number
if (ffversion<11 || ieversion<9 || oprversion<11.6)
function browserwarning()
{
document.getElementById('oldbrowser').style.display="inherit";
}
//END OF 4TH BATCH
如果政治家无效,您忘记了一些括号和函数。此代码将在没有语法错误的情况下工作:
//4th batch shows a warning box upon finding a visitor with an outdated browser
if (/Firefox['/'s]('d+'.'d+)/.test(navigator.userAgent)) { //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
var ffversion = new Number(RegExp.$1); // capture x.x portion and store as a number
} else if (/MSIE ('d+'.'d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
var ieversion = new Number(RegExp.$1); // capture x.x portion and store as a number
} else if (/Opera['/'s]('d+'.'d+)/.test(navigator.userAgent)) { //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);
var oprversion = new Number(RegExp.$1); // capture x.x portion and store as a number
}
if (ffversion < 11 || ieversion < 9 || oprversion < 11.6) {
document.getElementById('oldbrowser').style.display = "inherit";
}
但我强烈建议您努力学习如何使用和编写javascript代码。看起来你正试图用中文写一封信,尽管你甚至不知道它们的符号
有很多{
,但没有相应的}
。
if (/Firefox['/'s]('d+'.'d+)/.test(navigator.userAgent)) {
var ffversion = new Number(RegExp.$1);
}
else if (/MSIE ('d+'.'d+);/.test(navigator.userAgent)) {
var ieversion = new Number(RegExp.$1);
}
else if (/Opera['/'s]('d+'.'d+)/.test(navigator.userAgent)) {
var oprversion=new Number(RegExp.$1);
}
if (ffversion < 11 || ieversion < 9 || oprversion < 11.6) {
document.getElementById('oldbrowser').style.display="inherit";
}
我刚刚关闭了所有的括号。
无论如何,我建议你在这里获得战利品:http://www.quirksmode.org/js/detect.html
相关文章:
- 对其他函数使用匿名函数's参数
- 创建要在其他函数中使用的全局变量
- 在Jquery调用之间添加其他函数
- Mocking console.log()/MOCHA测试框架中的任何其他函数
- 如何从ipify函数返回ip地址,以便在其他函数中使用
- 如果没有其他函数链接到promise,则默认行为
- Javascript创建函数,以便在其他函数之间共享变量
- 使通过函数加载的JSON可用于其他函数
- 可以获取模板实例值,但不能将其用于其他函数
- 如何停止一个函数并将其他函数设置为在 html5 的 javascript 中加载时运行
- 这个关键字位于$.ajax()中,用于调用其他函数来设置url
- SQLite+Javascript:在每个其他函数中执行多个查询
- 调用geocomplete中的其他函数
- 如何在 javascript 中将变量传递给对象内的其他函数
- 如何在Javascript中创建一个调用其他函数的函数
- 我用脚本创建了一个按钮.我可以通过点击按钮调用其他函数吗?我这样做,但失败了
- AJAX请求返回Javascript获胜't返回特定函数,但将返回其他函数
- 如何在其他函数中使用fn作为函数参数
- 返回带有其他函数的变量
- 如何在ES6中使用Arrow函数引用对象内部的其他函数