как найти div-ы по содержимому и поменять им свойства
на странице есть div
<button class="tc-btn-invisible">Стойки для очков</button> или <div>Стойки для очков</div> или с другими тегами, но с одним содержимым. Кроме "Стойки для очков" внутри тегов ничего нет. как найти все блоки с содержимым "Стойки для очков" и применить им свойство color:red; нужно ли для этого перебирать каждый элемент и смотреть его innerhtml или как-то можно задействовать queryselector для содержимого? |
Цитата:
|
Цитата:
Если искомый текст однозначно находится в каком либо одном типе элементов/нескольких, то можешь по крайней мере выбрать массив этих элементов, и перебирать их на не все подряд. Если используешь jq то можно использовать filter или contains |
вот страница
<ul>
<li>Этот
<button class="tc-btn-invisible">Стойки для очков</button>
<button class="tc-btn-invisible">Стойки для носков</button>
</li>
<li>тест</li>
</ul>
<ul>
<a class="tc-tiddlylink tc-tiddlylink-resolves" href="#HelloThere">
<span class=" tc-reveal"></span>
<span class=" tc-reveal" hidden="true"></span>
Стойки для очков
</a>
<li>полностью</li>
<li>пройден</li>
</ul>
var elements = document.querySelectorAll('ul button') ;
for (var i = 0; i < elements.length; i++) {
if( elements[i].innerHTML=="Стойки для очков" ){elements[i].style.color = 'red';} ;
}
если 'ul button' , то все работает, а если 'ul a' то не работает. как сделать чтобы innerhtml не учитывал <> внутри себя? и как добавить несколько условий поиска в document.querySelectorAll('ul button') ? вот тут код http://jsfiddle.net/zip13/e6xh09kf/1/ |
sovsem-nub,
ищутся текстовые ноды и применяется стиль к их родителям. |
sovsem-nub,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function(){
var s = $("button, a");
s.contents().filter(function() {
return this.nodeType == 3 && this.data.indexOf('Стойки для очков') != -1;
}).parent().css({color:'red'})
});
</script>
</head>
<body> <ul>
<li>Этот
<button class="tc-btn-invisible">Стойки для очков</button>
<button class="tc-btn-invisible">Стойки для носков</button>
</li>
<li>тест</li>
</ul>
<ul>
<a class="tc-tiddlylink tc-tiddlylink-resolves" href="#HelloThere">
<span class=" tc-reveal"></span>
<span class=" tc-reveal" hidden="true"></span>
Стойки для очков
</a>
<li>полностью</li>
<li>пройден</li>
</ul>
</body>
</html>
|
пробовал регуляркой убрать <>
как-то так alert( elements[i].innerHTML.replace(/<.*?>/g, "")); она убирает код, но в алерте появляется пустая строка сверху (не пробелы), как и ее убрать? |
не
Цитата:
innerHTML. Цитата:
|
Цитата:
indexOf как-то странно себя повел. Он покрасил "a" правильно, а "button" покрасил не тот а следующий. http://jsfiddle.net/zip13/e6xh09kf/2/ и мне он не подойдет, так как вариант "Стойки для очков бывают разные" не должен красится и как условия ИЛИ в селекторе делаются? и как вы код с кнопочкой ПУСК выкладываете? |
Цитата:
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
| Часовой пояс GMT +3, время: 00:49. |