Как я могу добавить атрибуты "класса" к элементам HTML? - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть следующий HTML. Я хочу добавить class="last" атрибуты к окончательным li элементам в каждом списке. Как я могу это сделать?

<div class="gpbscol">
<ul class="listl">
    <li>ACCESSORIES</li>
    <li>AMPLIFIERS</li>
    <li>ANALOG AUDIO PROCESSING</li>
    <li>MICROPHONE PREAMPLIFIERS</li>
    <li>MICROPHONES</li>
    <li>SPEAKERS/MONITORS</li>
    <li>STUDIO</li>
    <li>DIGITAL AUDIO PROCESSING</li>
    <li>CONSOLES, MIXERS</li>
    <li>DAWS/PERIPHERALS</li>
</ul>
</div>
<div class="audio"> 
   <ul class="listl">
    <li>DAWS/PERIPHERALS</li>
    <li>LOUDSPEAKERS — FOH</li>
    <li>RECORDERS/PLAYERS</li>
    <li>HEADPHONES</li>
    <li>MICROPHONES - WIRELESS CONVERTERS</li>
    <li>NETWORK AUDIO / CONTROL / SNAKES</li>
    <li>COMPUTER AUDIO INTERFACES</li>
    <li>INTERCONNECTS</li>
    <li>LOUDSPEAKERS — STAGE MONITORS</li>
    <li>ACOUSTIC TREATMENT</li>
    <li>MI PRODUCTS</li>
   </ul>
</div>

Таким образом, последний элемент может быть

<li class="last">MI PRODUCTS</li>

Ответы [ 5 ]

2 голосов
/ 10 ноября 2011

Я был бы проблемой стиля. Если бы у меня не было выбора для кодов на стороне клиента, я бы пошел на стилизацию CSS. Вы можете рассмотреть это:

ul.listl li:last-child { }
1 голос
/ 10 ноября 2011

Это было бы проще сделать с помощью jQuery:

$(function(){
    $("ul.listl li:last").addClass("last");
});

И это все, ребята:)

0 голосов
/ 11 ноября 2011

Самый простой из всех, это использование HtmlAgilityPack;

TextWriter text = new StringWriter();
string set =  [html here];
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(set);
HtmlNode node = doc.DocumentNode.SelectSingleNode("//li[last()]");
HtmlAttribute attr;
attr = node.SetAttributeValue("class", "last");
doc.Save(text);
return text;

В любом случае, спасибо всем за помощь.

0 голосов
/ 10 ноября 2011
string[] g=@"<div class=""gpbscol"">
<ul class=""listl"">
    <li>ACCESSORIES</li>
    <li>AMPLIFIERS</li>
    <li>ANALOG AUDIO PROCESSING</li>
    <li>MICROPHONE PREAMPLIFIERS</li>
    <li>MICROPHONES</li>
    <li>SPEAKERS/MONITORS</li>
    <li>STUDIO</li>
    <li>DIGITAL AUDIO PROCESSING</li>
    <li>CONSOLES, MIXERS</li>
    <li>DAWS/PERIPHERALS</li>
</ul>
</div>
<div class=""audio""> 
   <ul class=""listl"">
    <li>DAWS/PERIPHERALS</li>
    <li>LOUDSPEAKERS — FOH</li>
    <li>RECORDERS/PLAYERS</li>
    <li>HEADPHONES</li>
    <li>MICROPHONES - WIRELESS CONVERTERS</li>
    <li>NETWORK AUDIO / CONTROL / SNAKES</li>
    <li>COMPUTER AUDIO INTERFACES</li>
    <li>INTERCONNECTS</li>
    <li>LOUDSPEAKERS — STAGE MONITORS</li>
    <li>ACOUSTIC TREATMENT</li>
    <li>MI PRODUCTS</li>
   </ul>
</div>".Split(new string[]{"<li>"});

g[g.length-1]=g[g.length-1].replace("<li>","<li class='last' >");

string newString=String.Join("", g);
0 голосов
/ 10 ноября 2011

Я согласен с @JohnHartsock, но если вы хотите сделать это по-своему, вы можете использовать различные библиотеки, которые помогут вам в запросах HTML-элементов (DOM).

  1. Fizzler
  2. Sharp-Query
  3. HTML Agility Pack
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...