getElementByClass существует ли в vanilla js? иНп? - PullRequest
1 голос
/ 04 мая 2011
<p id ="myP">

 Render this text using the myC class </p>
---------------------------
.teststyle {
    background-color:#00ff00;
    font-size: 200%;
}
---------------------
window.onload = load;           

function load(){
         document.getElementById("myP").className = "teststyle";
}
----------------------

Играя с jsfiddle.net и JavaScript, я обнаружил, что "getElementByClass" не поддерживается в JS. Мне интересно почему? Что если у меня есть класс в моем XTHML-коде, как я могу преобразовать этот код?

Еще одна странная вещь, которую я заметил: если я использую onload = "load()" в xhtml, он не будет работать, как если бы у меня было "windows.load" в js-коде ... почему? Это должно быть то же самое, может быть, это только я .. спасибо!

Ответы [ 3 ]

5 голосов
/ 04 мая 2011

Нет, это не так, потому что имя функции:

getElementsByClassName
//        ^       ^^^^

Обратите внимание, что она не поддерживается в IE до IE9.

Взгляните на документацию getElementsByClassName.

Относительно проблемы onload: без кода трудно сказать, что вы сделали неправильно.Если вы сделаете

<body onload="load()">

, это будет работать.Но в любом случае этого следует избегать (прикрепляя обработчики событий в HTML).

1 голос
/ 04 мая 2011
function getElementsByClassName( strClassName, obj ) {
    var ar = arguments[2] || new Array();
    var re = new RegExp("\\b" + strClassName + "\\b", "g");

    if ( re.test(obj.className) ) {
        ar.push( obj );
    }
    for ( var i = 0; i < obj.childNodes.length; i++ )
        getElementsByClassName( strClassName, obj.childNodes[i], ar );

    return ar;
}

Использование:

var aryClassElements = getElementsByClassName( 'findMe', document.body );

От: http://www.tek -tips.com / viewthread.cfm? Qid = 1143850 & page = 1

Вы, ребята, ищете в Google перед публикацией здесь?

1 голос
/ 04 мая 2011

Я обнаружил, что "getElementByClass" не поддерживается в JS, а?Интересно, почему?

Потому что в JS нет нативной манипуляции с DOM.Это отдельный API (предоставляемый браузерами, некоторыми другими средами JS и библиотеками для этих других сред).

… но вы, вероятно, считаете реализации DOM браузера частью JS дляэтот вопрос так:

Поскольку class не является общей концепцией DOM, она специфична для HTML (или, по крайней мере, начиналась именно так).getElementsByClassName (примечание Имя !) Является новым в черновиках спецификаций, и не все браузеры его реализовали.

так что, если у меня есть класс в моем XTHML-коде, как можноЯ преобразовываю этот код?

Вы не используете getElementsByClassName в этом коде, поэтому в этом нет особого смысла.

Существует множество сторонних библиотек, которые предоставляют средствачтобы получить элементы на основе классов, к которым они принадлежат.У некоторых есть реализации getElementsByClassName, некоторые просто реализуют механизмы выбора (такие как YUI и jQuery).

Другая особенность, которую я заметил, заключается в следующем: если я использую onload = "load ()" в xhtml wonне работает, как если бы у меня был "windows.load" в JS-код ... как DAT?должно быть то же самое, может быть, это только я .. спасибо!

Один перезапишет другой.

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