2016-12-25 5 views
0

Я использую javascript для доступа к значению атрибута предыдущего элемента.Как получить предыдущий элемент DOM в Javascript?

Мой HTML:

<form> 
 
     <div> 
 
      <label for="name">Name :</label> 
 
      <input type="text" name="name"> 
 
     </div> 
 
     <div> 
 
      <label for="email">E-Mail :</label> 
 
      <input type="email" name="email"> 
 
     </div> 
 
    </form>

Я использую цикл, чтобы прочитать все входные элементы в моей форме.

Но я хочу прочитать HTML-код ярлыка.

ex.

Input Element : 'email' 

    Label   : 'E-Mail' 

Также я хочу JavaScript решение только!

//////// Я не использую jQuery! ///////

+1

Что вы уже пробовали? – Dekel

+0

вы должны показать нам, что вы пробовали. Покажите свой JS. –

+0

"document.getElementsByName (" email "). PreviousElementSibling.innerHTML« –

ответ

1

Свойство .previousElementSibling Чтобы получить элемент метки, вы можете использовать свойство .previousElementSibling.

var el = document.getElementsByTagName('input'); 

for(var i =0; i< el.length;i++){ 
console.log(el[i]); 
console.log(el[i].previousElementSibling); 
if(el[i].getAttribute("name")==el[i].previousElementSibling.getAttribute("for")){ 
console.log("it is label"); 
} 
} 

Вот пример jsfiddle.

+0

Простой доступ к метке. Но, это может отвлечься на некоторые другие элементы? Любое практическое решение для доступа только к этикетке? –

+0

Учитывая, что код находится в библиотеке, что гарантирует, что предыдущий элемент является 'label' здесь? – Teemu

+0

Зная, что только метка имеет атрибут 'for', и этот атрибут равен имени ввода, вы можете использовать' if (el [i] .getAttribute ("name") == el [i] .previousElementSibling.getAttribute (" for ")) {// здесь}. –

1

Используется код здесь: Find html label associated with a given input

//associate all labels to inputs: 
var labels = document.getElementsByTagName('LABEL'); for (var i = 0; i < labels.length; i++) { if (labels[i].htmlFor != '') { var elem = document.getElementsByName(labels[i].htmlFor)[0]; if (elem) elem.label = labels[i]; } } 

//get email for example 
email=document.getElementsByName("email")[0]; 
EmailLabelvalue=email.label.innerHTML; 

Он соединяет каждую этикетку с его входа, чем вы можете легко получить его с помощью input.label. Чтобы получить его содержательную ценность, используйте .innerHTML ...

+0

'document.getElementsByName (« email »)' this не будет выбирать .. label. –

+0

Он получит элемент электронной почты, просто пример того, как использовать ... –

+0

Сгенерировать: «Не могу прочитать свойство« innerHTML »» –

Смежные вопросы