调试我的网站时收到无效参数错误。只有当悬停在一个手风琴菜单项上时才会出现错误。进一步检查后,我发现了可能导致此问题的代码,这是我在下面的问题。 (参见更新#2)。
我不知道具体导致错误的原因,或者如何解决错误.HALPS
突出显示的代码行是:
a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now
我无法弄清楚..我讨厌IE8:)
我将问题追溯到使用从ThemeForest下载的此管理模板预先构建的可折叠导航。
我发现“Accordian Menu”代码中的内容:
https://gist.github.com/48d7ffcc654ce24040c5
以及用于初始化菜单的这段代码:
/*
* Accordion Menu
*/
$('.menu').initMenu();
进一步检查显示IE8开发工具在本地人:
下抛出此内容 Prop "PaddingRight" String
然后我偶然发现了要点中第二个函数的一行:
$(this).hover(
function() {
$(this).animate({
paddingLeft:parseInt(padding_left) + parseInt(5) + "px",
paddingRight: parseInt(padding_right) - parseInt(5) + "px"
}, 130);
},
function() {
bc_hover = $(this).css("background-color");
$(this).animate({
paddingLeft: padding_left,
paddingRight: padding_right
}, 130);
}
这是我尝试过的代码的jsfiddle,而在jsfiddle我无法复制问题。 http://jsfiddle.net/7Y68Y/6/
答案 0 :(得分:4)
当介入CSS时,这种错误很常见。如果给CSS属性一个错误的值,IE会抱怨它。
<强>更新强>
OP忘记提及padding_left
之前已声明为$(this).css('padding-left')
在这种情况下,你应该知道空字符串;例如:
$('<div />').css('padding-left') == ''
parseInt('') == NaN
有了这些知识,让我们改变作业:
var padding_left = $(this).css("padding-left");
var padding_right = $(this).css("padding-right");
将它们变成正确的整数:
var padding_left = parseInt($(this).css('padding-left') || 0);
var padding_right = parseInt($(this).css("padding-right") || 0);
然后让我们回到动画代码:
$(this).animate({
paddingLeft: parseInt(padding_left) + parseInt(5) + "px",
paddingRight: parseInt(padding_right) - parseInt(5) + "px"
}, 130);
我们假设原始填充也是px
个单位。在这种情况下,我们可以将语句简化为:
$(this).animate({
paddingLeft: (padding_left + 5) + "px",
paddingRight: (padding_right - 5) + "px"
}, 130);
另一个:
$(this).animate({
paddingLeft: padding_left + "px",
paddingRight: padding_right + "px"
}, 130);