[英]How can I have a function method in an if condition with JavaScript code?
我想在我的JavaScript代码中给出条件方法。 此代码在Internet Explorer 10版本中不起作用。 当我在JavaScript验证器中粘贴此代码时,会显示以下消息:
函数声明不应放在块中。 使用函数表达式或将语句移动到外部函数的顶部。
我怎么能在这里有功能?
if(jQuery("header").attr("id") == "header-style-two")
{
function sticky_relocate() {
var window_top = jQuery(window).scrollTop();
var div_top = jQuery('#sticky-anchor').offset().top;
if (window_top > div_top) {
jQuery('.mainmenu-area').removeClass('light-menu');
//This is for when div in top
} else {
jQuery('.mainmenu-area').addClass('light-menu');
//This is for when div in not top
}
}
jQuery(function () {
jQuery(window).scroll(sticky_relocate);
sticky_relocate();
});
}
你不能在if块中使用命名函数 (它不符合规范并且提升会使它相当混乱,但是一些JavaScript引擎可能会尝试补偿不良代码,这就是它可能在某些浏览器中工作的原因) ,但您可以将函数分配给if块中的变量。
而不是:
function sticky_relocate() {
你可以这样做:
var sticky_relocate = function() {
所以这样的事情会起到作用:
if(jQuery("header").attr("id") == "header-style-two")
{
var sticky_relocate = function() {
var window_top = jQuery(window).scrollTop();
var div_top = jQuery('#sticky-anchor').offset().top;
if (window_top > div_top) {
jQuery('.mainmenu-area').removeClass('light-menu');
//This is for when div in top
} else {
jQuery('.mainmenu-area').addClass('light-menu');
//This is for when div in not top
}
}
jQuery(function () {
jQuery(window).scroll(sticky_relocate);
sticky_relocate();
});
}
JSHint正在给你一个警告,这意味着,“我们认为这不是最好的主意,但我们会允许你这样做。”
您可以通过几种方式更改代码。
将函数声明更改为函数表达式:
if(jQuery("header").attr("id") == "header-style-two") {
var sticky_relocate = function() {
var window_top = jQuery(window).scrollTop();
var div_top = jQuery('#sticky-anchor').offset().top;
if (window_top > div_top) {
jQuery('.mainmenu-area').removeClass('light-menu');
//This is for when div in top
} else {
jQuery('.mainmenu-area').addClass('light-menu');
//This is for when div in not top
}
}
jQuery(function () {
jQuery(window).scroll(sticky_relocate);
sticky_relocate();
});
}
或者将函数定义移出if
块。
if(jQuery("header").attr("id") == "header-style-two") {
jQuery(function () {
jQuery(window).scroll(sticky_relocate);
sticky_relocate();
});
}
function sticky_relocate() {
var window_top = jQuery(window).scrollTop();
var div_top = jQuery('#sticky-anchor').offset().top;
if (window_top > div_top) {
jQuery('.mainmenu-area').removeClass('light-menu');
//This is for when div in top
} else {
jQuery('.mainmenu-area').addClass('light-menu');
//This is for when div in not top
}
}
在if条件下你不能有函数声明。 您可以将它放在外面并根据条件调用它。
var isHeaderStyleTwo = (jQuery("header").attr("id") == "header-style-two");
function sticky_relocate() {
var window_top = jQuery(window).scrollTop();
var div_top = jQuery('#sticky-anchor').offset().top;
if (window_top > div_top) {
jQuery('.mainmenu-area').removeClass('light-menu');
//This is for when div in top
} else {
jQuery('.mainmenu-area').addClass('light-menu');
//This is for when div in not top
}
}
jQuery(function () {
if (isHeaderStyleTwo) {
jQuery(window).scroll(sticky_relocate);
sticky_relocate();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.