2011-04-14 5 views
1

JavaScriptを使用して、大企業が管理するサイトのラジオボタンのチェック済みステータスを更新しようとしています。ここに問題があります。ページには2つの関連するラジオボタンのIDと名前が重複していて、それらは名前のない表の行のセルにあります。私は最初のものを選択したい。助けてくれてありがとう。JavaScriptを使用してテーブルセル内のラジオボタンを更新する

以下は以下私が最初にラジオオプションを選択するようにラジオを更新しようとした様々なJavaScriptの例であり、基本的なHTML

<table cellspacing='0' cellpadding='0' border='0'> 
    <tr> 
     <td> 
      <img alt='spacer' src='../Images/blank.gif' width='10' height='1' border='0' /> 
     </td> 
     <td id='A-Q1_0200-1' valign='top'> 
      <font size='-1'> 
       <input type='radio' name='Q1_0200' id='Q1_0200' value='1' onclick='FormChanged()' 
       class='bodyInput' /> 
      </font> 
     </td> 
     <td colspan='1' valign='top' id='A-Q1_0200-1-T'> 
      <font size='-1'> 
       &nbsp;Yes 
      </font> 
     </td> 
     <td> 
      <font size='-1'> 
       &nbsp; 
      </font> 
     </td> 
     <td id='A-Q1_0200-2' valign='top'> 
      <font size='-1'> 
       <input type='radio' name='Q1_0200' id='Q1_0200' value='2' checked='checked' onclick='FormChanged()' 
       class='bodyInput' /> 
      </font> 
     </td> 
     <td colspan='1' valign='top' id='A-Q1_0200-2-T'> 
      <font size='-1'> 
       &nbsp;No 
      </font> 
     </td> 
    </tr> 
</table> 

です。

document.getElementById('A-Q1_0200-1').Q1_0201.checked='checked'; 

    document.getElementById('A-Q1_0200-1').radio[0].checked=TRUE; 

    document.getElementById('Q1_0200').checked=TRUE 

    document.getElementById('Q1_0200').checked=’TRUE 
+0

最初のラジオエレメントをチェックしないように変更しようとしています。 –

答えて

0

IDを重複させることはできません。getElementById()は動作しません。 IDは「ID」を意味し、各IDは一意である必要があります。それがあなたの3番目と4番目の例が失敗した理由です。

次のコードでは、IDで親<td>を選択した後、最初の子孫inputを選択し、checkedプロパティを設定します。

document.getElementById('A-Q1_0200-1').getElementsByTagName("input")[0].checked = "checked"; 
+0

ありがとう - これは完璧な意味合いがあります。私はそれを試して、それは動作しませんでした。また、最後にtrueまたは 'checked'を使用するかどうかを決定するものは何ですか? (私は両方を試しました) –

+0

Jesse、IDEの外で試しました - Firebugを使用してください(以下の別のレスポンダとして提案されています)。それは動作します - ありがとう。唯一の問題は、ラジオボタンを "checked"に変更しても、その選択に基づいて関連するカスケードテキストフィールドを開かないことです。多分、私はそれのために何かを始めなければなりません。 –

+0

これは、他のスクリプトの背後にある関数を実行するために必要なものです。再度、感謝します! –

0

ここにはJSFiddle Demo:があります。これにより、ラジオタイプの最初の要素を選択することができます。

これを行う1つの方法は、getElementsByTagNameを使用して、最初のタイプのラジオを確認しますが、IDは一意である必要があります。それはあなたのコントロールの外にありますように思える:

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

for(var i=0; i<myInput.length; i++){ 
    if(myInput[i].type == 'radio'){ 
     console.log(myInput[i]); 
     break; 
    } 
} 

にconsole.logはあなたに以下の要素与えるだろう:

<input type=​"radio" name=​"Q1_0200" id=​"Q1_0200" value=​"1" onclick=​"FormChanged()​" class=​"bodyInput">​ 

、そこからあなたがtrueにチェックし、選択した要素の設定することができます上:myInput[i].checked = true;またはmyInput[i].checked = 'checked';

+0

ありがとうございます - このオプションもテストします。私は違いがあるとは思っていませんが、開発中のiOSアプリを通じて、Apple xCodeを通じてこれをテストしています。ページ上の他のすべてのJS(テキストフィールドの更新)はうまくいきます。他の人のウェブサイトでこの同じjsをテストして動作するかどうかを確認するために使用できる別のツールはありますか? (例:Aptanaなどのツール) –

+0

@user Chromeの開発ツールやFirefoxのFirebugを使用してjsをデバッグすることができます – kjy112

+0

ありがとうございます、Firebugは役に立ちました。 –

0

getElementByIdは、最初に見つかった要素を返します。それを確認したい場合は:document.getElementById('Q1_0200').checked = 'checked';

+0

が正しいです。これはあなたの状況のた​​めに働く、ちょうどhtmlの順序があなたに変わらないように祈る。 – jessegavin

+0

あなたの応答に感謝 - これは私のためにしかし働いていませんでした。 CSSや他のスクリプトがどこかでjs経由でラジオボタンにアクセスできないことがありますか?テキストフィールドを問題なく選択して更新することができました。 –

+0

@ user689852あなたはid = Q1_0200という別の要素を無線入力要素ではないどこかに置くことができますか?なぜ/何が失敗したかについて、より多くの情報を提供する。 FirebugとChromeデベロッパーツールは、コードをデバッグするための優れたツールです。 – LoveGandhi