2017-04-18 5 views
2

さて、これは初心者からの非常に具体的な質問ですので、私に同行してください。1行のjavascript(jQueryなし)を使用してIDのないラジオボタンを確認するにはどうすればよいですか?

私はロープを学ぶだけの初心者です。背景は次のとおりです(気にしない場合は次のパラにスキップしてください):私は最初のアンドロイドアプリをアップデートしています。私はMIT App Inventor 2を使っています。 WYSIWYGのスクリーンエディタとBlocklyを使用して行動、インタラクションなどを作成する無料のツールです。私が作成しているアプリは、フォームを使って特定のウェブページを読み込んで、あなたのフォームの大半を埋めます(具体的には、人々は劇場ショーのためのオンラインチケット抽選に入る)。このページは自分のものではないので、HTMLを編集することはできません。しかし、私はそれを上にJavaスクリプトを実行することができます1行のjavascriptコードをブロックする側のApp Inventorにプラグインします。 Here's a relevant example of how it looks.

getElementByID()を使用してほとんどのフォームを記入する方法を知りました。しかし、idを持たないラジオボタンのセットがあります。

document.querySelector('input[name=tickets]').checked = true; 

しかし、もちろんのことは、最初のラジオボタンを選択します。

<div id="cont_id_tickets"> 
    <div> 
     <input type="radio" name="tickets" value="1" /> 
     <span style="font-family:Times New Roman; font-size:15px;">1</span> 
    </div> 
    <div> 
     <input type="radio" name="tickets" value="2" /> 
     <span style="font-family:Times New Roman; font-size:15px;">2</span> 
    </div> 
    <div id="required_info_tickets" class="requiredInfo floatLeft"> 
    </div> 
    <input type="hidden" name="reqField" value="tickets" alt="Radio" req="true" errorMsg="Please enter a valid value." requredErrorMsg="This field is required. Please enter a value." 
     patternID="0" customRegex="" /> 
</div> 

私は次を使用して、いくつかの進歩を遂げてきました。ここではHTMLの軽く修正版は、(私が編集できない)です。私は値(1または2)を取得し、それに応じて適切なボタンを選択できるようにしたいと思います。私が使用しているBlocklyバックエンドでは、javascriptの行にプラグインする変数を定義できますが、javascriptの行は本質的に1行でなければなりません。私は値が例えば2になりたい場合は、次のいずれかが働くだろう期待していた。

document.querySelector('input[name=tickets][value=2]').checked = true; 
document.querySelector('input[name=tickets]').2.checked = true; 

しかし、どちらもありません。正しい構文に関するアイデア?

ありがとうございました!

+0

[ここに私がしてきたJSFiddleですテストのために使用する](https://jsfiddle.net/adu1r2j3/)を参考にしてください。 – JPTiger

+0

FYI - AppInventorは、スクラッチではなく[Blockly](https://developers.google.com/blockly/)を使用しています。質問文を更新しました。 – Anm

答えて

4

あなたは引用符で使用して選択しようとしている値を配置する必要があります。

document.querySelector('input[name=tickets][value="2"]').checked = true; 

document.querySelector('input[name=tickets][value="2"]').checked = true;
<div id="cont_id_tickets"> 
 
    <div> 
 
    <input type="radio" name="tickets" value="1" /> 
 
    <span style="font-family:Times New Roman; font-size:15px;">1</span> 
 
    </div> 
 
    <div> 
 
    <input type="radio" name="tickets" value="2" /> 
 
    <span style="font-family:Times New Roman; font-size:15px;">2</span> 
 
    </div> 
 
    <div id="required_info_tickets" class="requiredInfo floatLeft"> 
 
    </div> 
 
    <input type="hidden" name="reqField" value="tickets" alt="Radio" req="true" errorMsg="Please enter a valid value." requredErrorMsg="This field is required. Please enter a value." patternID="0" customRegex="" /> 
 
</div>

+0

'[value =" 2 "]'が動作し、 '[value = 2]'がなぜそうでないのか説明してください。名前属性には引用符を使用しないためです。 –

+2

これは、[この回答に要約されている仕様ルール](http://stackoverflow.com/a/7286343/557445)に起因しています。基本的に、このセレクタは有効なCSS識別子を必要とするので、識別子は「数字、2つのハイフン、またはハイフンの後ろに数字で始めることはできません...」](https://www.w3.org/TR/ CSS21/syndata.html#value-def-identifier)。したがって、 "2"を目標にしたい場合は引用符を使用せず、 "2"を指定するのではなく、期待どおりに動作するはずです。あなたは[ここ](https://jsfiddle.net/adu1r2j3/2/)の例を見ることができます –

+0

私が探していたもの。ありがとう、リオン! – JPTiger

関連する問題