JavaScript - неверный аргумент IE8 - PullRequest
9 голосов
/ 30 июня 2011

У меня небольшая проблема с 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.Любые отзывы приветствуются.Simon

Ответы [ 2 ]

9 голосов
/ 30 июня 2011

Если object.width меньше 16

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

, тогда будет получена строка с отрицательным знаком спереди, что недопустимо, поскольку ширина должна быть неотрицательной.

Вы можете исправить это, сказав

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

и аналогично для высоты.

Многие браузеры игнорируют недопустимое содержимое, но IE в некоторых режимах более строгий, поэтому вы, вероятно, просто получаете ошибку молчанияв других.

2 голосов
/ 30 июня 2011

Я думаю, это связано с hover.setAttribute("class", "myarea");. Если IE 8 работает в IE 7 или ниже, это не будет работать. Затем вы должны использовать hover.className = 'myarea' (поддерживается всеми браузерами).

Параметру sAttrName требуется имя требуемого атрибута содержимого, а не Атрибут Объектная модель документа (DOM). Например, в режиме IE8 этот метод больше не требует, чтобы sAttrName было «className» при установке, получении или удалении атрибута CLASS. Более ранние версии Internet Explorer и Internet Explorer 8 в режиме совместимости по-прежнему требуют sAttrName для указания соответствующего имени свойства DOM.

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

Проверьте, работает ли IE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...