2016-12-25 7 views
0

私は以前の要素の属性値にアクセスするためにjavascriptを使用しています。Javascriptで前のDOM要素を取得するにはどうすればよいですか?

私の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プロパティを使用できます。

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'を持ち、この属性が入力の名前と同じであることを知っているなら、あなたは ' for) ")){//ここにコードしてください}。 –

1

:それはあなたが簡単にinput.labelを使用してそれを得ることができるよりも、その入力ですべてのラベルを結ぶ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; 

。含まれる値を取得するには、.innerHTML ...

+0

'document.getElementsByName(" email ")'これはラベルを選択しません。 –

+0

メールの要素を取得します。使用方法の例を示します。 –

+0

生成:「プロパティ 'innerHTML'を読み取ることができません」 –

関連する問題