2010-12-03 7 views
1

私はJavaScriptを使用してiframeの修正を行っています。 iframeには、this formidを知らずに文書からラベルを選択

が含まれています。ラベルから情報を取得することができます。 IDはありません。私はIDで入力ボタンを取得するjavascriptを得ることができ、それに割り当てられたラベルを分析する方法はありますか?

答えて

2

カサブランカの方法が最良の方法です。

あなたが知っている可能性のある項目によっては、他のことがより速いかもしれません。例えば、あなたはそれはあなたがのIDを知っているDIV内にあることを知っている、とあなたはそれがそのDIV内部のラベルのみであることがわかっている場合は、あなたがいることを知っている場合は、

var label = document.getElementById('myDiv').getElementsByTagName('label')[0]; 

ような何かを行うことができますそれは常にあなたのボタンと同じ親を持つラベルだけだろう、あなたは基本的には、ソリューションの広範なセットは、あなたがする余裕ができるか仮定に応じて、最適かもしれません

var label = document.getElementById('button').parentNode.getelementsByTagName('label')[0]; 

を書くことができます。あなたが質問で私たちに語ったことだけを知っているならば、カサブランカの反復は行く方法です。

+2

。 'parent()'ではなく 'parentNode'でなければならないのでしょうか? – casablanca

+0

@cas:バー、そうです、このjqueryのものに慣れてきました:)編集しました。ありがとう。 –

+0

2番目の文字列は機能しましたが、これをiFrameでどのように動作させることができますか?私が言ったように、提供されたリンクはiFrameのコンテンツに過ぎませんでした。 – Tommy

4

すべてlabelの要素を通過し、そのfor属性、ボタンのIDと一致するものを見つけることができる:あなたが唯一のボタンのIDを知っていれば

var labels = document.getElementsByTagName('label'); 
var label = null; 
var buttonID = '...'; 
for (var i = 0; i < labels.length; i++) 
    if (labels[i].htmlFor == buttonID) { 
    label = labels[i]; 
    break; 
    } 
// "label" now refers to the label you're looking for 
0

この種の操作については、jQueryを調査することを強くお勧めします。私はこの1つの小さな問題を解決するためにJavascriptフレームワーク全体を導入したくないかもしれないと確信していますが、Javascriptプログラミングがもっと簡単になることがわかります。

カサブランカの答えが正しい@、あなたは次のコードではjQueryで同じことを達成することができると仮定すると:。

var label = $('label[for="..."]').get(0); 

(またはそのような何か私の構文がずれることがあります:-)

+3

html属性は 'for'です。 javascriptでは、プロパティは 'for'が予約済みのキーワードであるため、' htmlFor'と呼ばれます。 jQueryに相当するものは、単純に '$( 'label [for = buttonID]');'です。 –

+0

これをiframe内のコンテンツにどのように適用できますか? – Tommy

+0

@David訂正していただきありがとうございます。 –

関連する問題