css значок цели по тексту [dубликат]

На этот вопрос уже есть ответ: есть ли селектор CSS для элементов, содержащих определенный текст? 13 ответов
<a href="example1.com"> innerHTML1 </a>
<a href="example2.com"> innerHTML2 </a>
<a href="example3.com"> innerHTML3 </a>

Я хочу создать только второй (innerHTML2) с помощью селекторов CSS, основанный на внутреннем HTML. Это возможно? Я пробовал использовать a[value=innerHTML2], но он, похоже, не работает.

32
задан 27 January 2011 в 05:00

6 ответов

вы можете использовать свойство css nth-child для доступа к любому элементу и любых изменений. Я использовал его на веб-сайте, который я сделал, чтобы сделать логотип меньшим или большим по ширине экрана.

0
ответ дан 15 August 2018 в 15:54
  • 1
    Можете ли вы представить простой пример того, как будет выглядеть код css, чтобы помочь другим, которые могут быть не знакомы с этим свойством или форматом? – pczeus 28 January 2017 в 01:02
  • 2
    например, если есть div с меткой класса, и есть 4 & lt; p & gt; элементы внутри него, если я хочу применить свойство ко всем четным или нечетным элементам или даже к одному элементу, я могу сделать это с помощью n-го дочернего свойства, прочитайте об этом в w3schools, так как у них есть гораздо лучшие примеры со всеми его вариации, намного лучше, чем я бы дал здесь, я довольно плохо даю примеры. ;) w3schools.com/cssref/sel_nth-child.asp – Abhansh Giri 15 April 2017 в 07:34
  • 3
    Добро пожаловать в SO! Похоже, это один из ваших первых ответов. Ваш метод, безусловно, является решением, но в целом ответы нуждаются в двух вещах: 1. Новый ответ на этот конкретный вопрос, который может быть «вы не можете, а вот работа вокруг». и образец кода для решения проблемы, потому что ссылки остаются устаревшими / ломаются / перемещаются. Когда вы получите шанс, посмотрите tour , если вы еще этого не сделали. – Josiah 4 October 2017 в 17:15

Это довольно просто с селектором nth-child.

<style>
a:nth-child(2) {
  color: green;
}
</style>
<a href="example1.com"> innerHTML1 </a>
<a href="example2.com"> innerHTML2 </a>
<a href="example3.com"> innerHTML3 </a>

Изменить: вот источник, на который я нашел это. Проверьте совместимость браузера. Источник: http://reference.sitepoint.com/css/pseudoclass-nthchild

-7
ответ дан 15 August 2018 в 15:54
  • 1
    Также он не выбирает на основе внутреннего html, который он выбирает, основываясь на позиции, поэтому он не отвечает на вопрос – Adrian 27 January 2011 в 05:14
  • 2
    Как было сказано ранее, это не выбирает элемент на основе содержимого, но он выбирает элемент на основе индекса, который не зависит от запроса OP. – Complexity 30 June 2014 в 11:35

Используя pup, инструмент командной строки для обработки HTML с помощью селекторов CSS, вы можете использовать a:contains("innerHTML1").

Например:

$ echo '<a href="example1.com"> innerHTML1 </a>' | pup 'a:contains("innerHTML1")' text{}
 innerHTML1 
0
ответ дан 15 August 2018 в 15:54

В настоящее время это невозможно для всех браузеров с css, но с javascript вы можете это сделать

Обновлен w / рабочий код. JSFiddle ссылка ниже:

Начальный HTML для @whamsicore:

<a href="example1.com"> innerHTML1 </a>
<a href="example2.com"> innerHTML2 </a>
<a href="example3.com"> innerHTML3 </a>

JavaScript:

var myEles = document.getElementsByTagName('a');
for(var i=0; i<myEles.length; i++){
    if(myEles[i].innerHTML == ' innerHTML2 '){
         console.log('gotcha'); 

         //use javascript to style
         myEles[i].setAttribute('class', "gotcha");
    }
}

CSS для стилизации:

/* make this look a bit more visible */
a{
  display: block;
}

.gotcha{
  color: red;
}

https://jsfiddle.net/kjy112/81qqxj23/

10
ответ дан 15 August 2018 в 15:54
  • 1
    +1 для того, чтобы не думать, что jQuery - это все и конец всего JavaScript. – LeeGee 7 February 2014 в 23:07
  • 2
    Это вводящий в заблуждение ответ? Я потратил час, прежде чем я понял, что метода getElements нет. Мне нужно было использовать document.getElementsByTagName. – FLICKER 30 November 2017 в 00:28

С помощью CSS вы не можете обнаружить содержимое тега привязки.

[value=] ссылается на атрибут тега

<a href="" value="blah"> innerHTML2 </a>

Не очень полезно, поскольку value недействителен HTML на теге a

Если возможно, удалите класс в теге a. Поскольку это, скорее всего, невозможно (поскольку вы уже это сделали), вы можете использовать jQuery для добавления класса в этот тег. Попробуйте что-то вроде этого:

   <script type="text/javascript">
        $(function(){ $('a:contains(innerHTML2)').addClass('anchortwo'); });
    </script>

И затем используйте .anchortwo в качестве селектора вашего класса.

11
ответ дан 15 August 2018 в 15:54
  • 1
    отредактирован из-за случайного downvote без объяснения причин – Jason 12 August 2013 в 05:49
  • 2
    Это самый близкий ответ о том, почему! ПРИМЕЧАНИЕ. Селектора css позволяют обнаруживать атрибуты, они предопределены в HTML-коде, где, поскольку innerHTML является свойством слоя DOM. Они могут напоминать доступ в js, но это две разные вещи: a.href - это атрибут, по которому CSS имеет знания, a.innerHTML - свойство DOM, неявное CSS. – JasonXA 28 May 2015 в 20:17
[F1]
-1
ответ дан 15 August 2018 в 15:54
  • 1
    Почему -1? Вы проверили это? – ratoupoilu 30 November 2015 в 19:39
  • 2
    Вы не выбираете элемент innerHTML. Вы выбираете атрибут, который имеет значение «innerHTML1». Итак, вы не ответили на вопрос. – joe-tom 24 December 2015 в 00:00
  • 3
    кстати @ joe-tom, Это помогает мне решить мою проблему. Если что-то невозможно, ратупоилу дал альтернативу. Это проблема с большинством нововерных в репутации stackoverflowians. – Ramesh Pareek 30 November 2017 в 05:08
  • 4
    Если вы хотите улучшить свое отношение, вы можете взглянуть на комментарий @Josiah по поводу ответа Абхианша Гири. – Ramesh Pareek 30 November 2017 в 05:11

Другие вопросы по тегам:

Похожие вопросы: