JavaScript для изменения CSS не работает в IE - PullRequest
2 голосов
/ 19 января 2011

Я немного новичок, когда дело доходит до Javascript, но мне удалось создать этот скрипт, который «выделяет» текст и вводимые данные в div. Он принимает логическое значение (show) для объявления того, скрываются или повторно отображаются элементы, а также имя скрываемого элемента (ов).

Он работает точно так, как задумано в Chrome и Firefox, но IE ничего не сделает. «Отладка» с использованием предупреждений, я думаю, проблема заключается в этой строке:

var div = document.getElementsByName(divName);

... следующего кода:

function hideAndShow(show, divName) {
        var hideColor = "#DFDFDF";

        // Find all matching divs and loop through
        var div = document.getElementsByName(divName);

        for (var count1 = 0; count1 < div.length; count1++) {

            // Find and loop through all elements in div
            var elements = div[count1].getElementsByTagName("*");

            for (var count2 = 0; count2 < elements.length; count2++) {
                if (elements[count2].tagName == "TEXTAREA" || elements[count2].tagName == "INPUT") {
                    elements[count2].disabled = !show; //Disable
                    elements[count2].style.borderColor = (show) ? "" : hideColor; // Change border colour
                    elements[count2].value = ""; //Clear existing text
                }
            }
            // Change the colour of anything left, such as text
            div[count1].style.color = (show) ? "" : hideColor;
            alert(div[count1].id);
        }
    }

Кто-нибудь может помочь или указать мне правильное направление? Я в тупике!

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Возможно, IE запутался из-за вашей страницы: http://www.romantika.name/v2/javascripts-getelementsbyname-ie-vs-firefox/

1 голос
/ 19 января 2011

afaik Реализация IE getElementsByName на самом деле ищет id

В IE7 по крайней мере:

// works in IE but not Chrome
<div id="test"></div>
alert(document.getElementsByName('test').length);

// doesn't work in IE, works in Chrome
<div name="test"></div>
alert(document.getElementsByName('test').length);

Такие библиотеки, как jQuery, справляются со всей этой ерундой и делают выборЭлементы DOM тривиальны.

Если вы хотите сделать это в чистом JS, вы можете обратиться к предоставлению реализации getElementsByClassName (см. здесь для примера), чтобы решить проблему.

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