Я хочу заменить содержимое элемента html, поэтому для этого я использую следующую функцию:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
Вышеописанное прекрасно работает, но проблема в том, что у меня есть несколько HTML-элементов на странице, содержимое которых я хочу заменить. Поэтому я не могу использовать идентификаторы, но вместо этого классы. Мне сказали, что javascript не поддерживает встроенный элемент get любого типа с помощью функции класса. Так как же можно изменить приведенный выше код, чтобы он работал с классами вместо идентификаторов?
PS Я не хочу использовать jQuery для этого.
источник
class
в качестве имени переменной в Safari не работает, поэтому в настоящее время оно оказывает влияние.elems[i].className
, скажемvar cn
и использованиеcn && cn.match(new RegExp("(^|\\s)" + matchClass + "(\\s|$)"))
будет работать лучше, поскольку оно соответствует любому пробелу (пробел, неразрывный пробел, табуляция и т. д.), а также позволяет сопоставить имена первого / последнего классов. Пример: jsfiddle.net/AXdtH/1636Конечно, все современные браузеры теперь поддерживают следующий более простой способ:
но имейте в виду, что он не работает с IE8 или раньше. Смотрите http://caniuse.com/getelementsbyclassname
Кроме того, не все браузеры будут возвращать чистоту,
NodeList
как они должны.Вам, вероятно, все еще лучше использовать вашу любимую библиотеку кросс-браузер.
источник
querySelectorAll
.Это будет работать в «современных» браузерах, которые реализуют этот метод (IE8 +).
Если вы хотите обеспечить поддержку старых браузеров, вы можете загрузить автономный механизм выбора, такой как Sizzle (4KB mini + gzip) или Peppy (10K mini), и использовать его, если не найден собственный метод querySelector.
Не стоит ли загружать селекторный движок, чтобы получить элементы определенного класса? Наверное. Однако сценарии не так уж и велики, и вы можете найти механизм выбора полезным во многих других местах вашего сценария.
источник
document.querySelector
работает в IE8 и выше: caniuse.com/queryselectorПростой и легкий способ
источник
Я удивлен, что нет ответов, использующих регулярные выражения. Это в значительной степени ответ Эндрю , использующий
RegExp.test
вместоString.indexOf
, так как, кажется, он работает лучше для нескольких операций, согласно тестам jsPerf .Это также, кажется, поддерживается на IE6 .
Если вы часто ищете один и тот же класс (ы), вы можете улучшить его, сохранив (предварительно скомпилированные) регулярные выражения в другом месте и передав их непосредственно в функцию вместо строки.
источник
Это должно работать практически в любом браузере ...
Вы должны быть в состоянии использовать это так:
источник
источник
Я предполагаю, что это было недопустимым вариантом, когда об этом изначально спрашивали, но теперь вы можете использовать
document.getElementsByClassName('');
. Например:Смотрите документацию MDN для получения дополнительной информации.
источник
Я думаю что-то вроде:
должно сработать
источник
JQuery справляется с этим легко.
Он изменяет все элементы .myclass на этот текст.
источник
Когда некоторым элементам не хватает идентификатора, я использую jQuery следующим образом:
Это может быть странное решение, но, возможно, кто-то найдет его полезным.
источник
myclass
, все они получат идентификаторmyid
, но идентификаторы должны быть уникальными! Более того, OP явно говорит, чтобы избежать jQuery.