Piszę rozszerzenie do Chrome i używam javascript do wyszukiwania elementów DOM. Trafiłem na stronę, która zawiera elementy <legend>, które wyglądają mniej więcej tak:

<legend for="contact_email">Contact Email</legend>

Mój kod wykonuje następujące czynności:

let legends = Array.from(document.querySelectorAll('legend'));
console.log('# Legends found: ' + legends.length);
for (let l of legends ) {
    console.log("Legend for= attribute: " + l.htmlFor + " );
}

Ten htmlFor jest zawsze niezdefiniowany. Działa to dla <label>. Czy jest inny sposób uzyskania atrybutu for = dla <legend>?

0
Larry 19 grudzień 2019, 18:52
5
HTML, na który patrzysz, jest po prostu błędny; for nie jest rozpoznawanym atrybutem w <legend> elementach. Możesz uzyskać wartość, ale musisz użyć getAttribute().
 – 
Pointy
19 grudzień 2019, 18:55
Legenda ma tylko atrybuty globalne, a for jest niejeden.
 – 
epascarello
19 grudzień 2019, 18:56
Prawdopodobnie chciałeś użyć tagów label. Etykieta ma atrybut for.
 – 
jeprubio
19 grudzień 2019, 18:59
Pamiętaj, że przypuszcza się, że legend działać jako podpisy dla swoich elementów nadrzędnych fieldset. fieldset zazwyczaj zawija wiele elementów formularza i ich labels.
 – 
Heretic Monkey
19 grudzień 2019, 19:10

1 odpowiedź

https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute

let legends = Array.from(document.querySelectorAll('legend'));
console.log('# Legends found: ' + legends.length);
for (let l of legends ) {
    console.log("Legend for= attribute: " + l.getAttribute('for') + " );
}

Uwaga- komentarz Pointy'ego jest poprawny, ponieważ <legend> nie obsługuje atrybutu for; obsługuje tylko Globalne atrybuty

1
Mr Lister 26 grudzień 2019, 15:56
Dziękuję Ci. To mnie załatwi.
 – 
Larry
19 grudzień 2019, 19:20