繁体   English   中英

JavaScript - 无效参数 IE8

[英]JavaScript - invalid argument IE8

我有一点 JavaScript 问题。 该代码在 Opera 和 Firefox 浏览器中有效,但在 Internet Explorer 8 中无效。有人知道为什么吗?

function createbtn(object, inner) {
    var hover = document.createElement("div");
    hover.setAttribute("class", "myarea");
    if (inner) {
        hover.style.width = object.width - 16 + "px";
        hover.style.height = object.height - 16 + "px";
        hover.style.top = getposy(object) + "px";
        hover.style.left = getposx(object) + "px";
    } else {
        hover.style.width = object.width + "px";
        hover.style.height = object.height + "px";
        hover.style.top = getposy(object) - 8 + "px";
        hover.style.left = getposx(object) - 8 + "px";
    }
}

我只是在学习 Javascript。 欢迎任何反馈。 西蒙

如果object.width小于 16

hover.style.width = object.width - 16 + "px";

那么这将在前面产生一个带有负号的字符串,这是非法的,因为宽度必须是非负的。

你可以通过说来解决这个问题

hover.style.width = Math.max(object.width - 16, 0) + "px";

同样对于高度。

许多浏览器会忽略无效内容,但某些模式下的 IE 更为严格,因此您可能只是在其他模式下遇到了静默失败。

我想这与hover.setAttribute("class", "myarea"); . 如果 IE 8 在 IE 7 或更低模式下运行,这将不起作用。 然后你必须使用hover.className = 'myarea' (所有浏览器都支持)。

sAttrName 参数需要所需内容属性的名称,而不是 Document Object Model (DOM) 属性的名称。 例如,在 IE8 模式下,此方法在设置、获取或删除 CLASS 属性时不再要求 sAttrName 为“className”。 兼容模式下的 Internet Explorer 和 Internet Explorer 8 的早期版本仍然需要 sAttrName 来指定相应的 DOM 属性名称。

http://msdn.microsoft.com/en-us/library/ms536739%28v=vs.85%29.aspx

检查模式 IE 正在运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM