Хорошо, я пробовал себя в JavaScript раньше, но самое полезное, что я написал, это переключатель стилей CSS. Так что я немного новичок в этом. Допустим, у меня есть HTML-код вроде этого:
<div id="foo">
<div class="bar">
Hello world!
</div>
</div>
Как бы я изменил "Привет, мир!" в "Прощай, мир!" ? Я знаю, как работают document.getElementByClass и document.getElementById, но я бы хотел получить более конкретную информацию. Извините, если об этом уже спрашивали.
источник
document.getElementsByClassName
будет работать нормально..innerHtml
на него.textContent
для обеспечения безопасности кодеров копирования / вставки.Вы можете сделать это так:
или, если вы хотите сделать это с меньшей проверкой ошибок и большей краткостью, это можно сделать в одну строку следующим образом:
По объяснению:
id="foo"
.class="bar"
.innerHTML
этот элемент, чтобы изменить его содержимое.Предостережения: некоторые старые браузеры не поддерживают
getElementsByClassName
(например, старые версии IE). Эта функция может быть вставлена на место, если она отсутствует.Именно здесь я рекомендую использовать библиотеку, которая имеет встроенную поддержку селектора CSS3, а не беспокоиться о совместимости браузера самостоятельно (пусть кто-то другой сделает всю работу). Если вам нужна библиотека, то Sizzle будет отлично работать. В Sizzle это будет сделано так:
jQuery имеет встроенную библиотеку Sizzle, а в jQuery это будет:
источник
Если это должно работать в IE 7 или ниже, вы должны помнить, что getElementsByClassName существует не во всех браузерах. Из-за этого вы можете создать свой собственный getElementsByClassName или вы можете попробовать это.
источник
getElementsByClassName
тоже не работает в IE8, но вы можете использоватьquerySelectorAll
его вместо него (в любом случае).qSA
в шимме, чтобы вы все еще могли использовать собственный код в IE8. Хотя при более внимательном рассмотрении вашего решения у вас есть несколько вещей, которые необходимо исправить.var i = 0, var child = fooDiv.childNodes[i]
является недействительным.i <= fooDiv.childNodes
на самом деле не имеет смысла.childNode.className.test("bar")
Там нетchildNode
переменной, и у строки нетtest()
метода.Рекурсивная функция:
источник
Самый простой способ сделать это:
или лучше читаемый:
источник
Вы не должны использовать document.getElementByID, потому что он работает только для клиентских элементов управления, идентификаторы которых являются фиксированными. Вы должны использовать jquery, как показано ниже.
использовать это :
если вы хотите удалить, отредактируйте любую операцию, затем просто добавьте "." позади и делать операции
источник