2

ヘルプが必要です...ラジオボタンを自動的にクリックしたい...しかし、文(ラベル)もチェックする必要があります...例...()<-ラジオボタン

<label>How much is 1+1?</label><br/>
<input type="radio" name="group1" value="2"/>()2<br/>
<input type="radio" name="group1" value="3"/>()3<br/>
<input type="radio" name="group1" value="4"/>()4

私はこのスクリプトを使ってみました:

// ==UserScript==
// @name script
// @description Auto select rpt radio button
// @include *
// ==/UserScript==

if(radio=document.evaluate('//input[@type="radio" and @value="2"]',document,null,9,null).singleNodeValue)
radio.checked=true;

OK、このコード..answer()2をクリックしますが、次の場合はどうなりますか?

<label>How much is 1+1?</label><br/>
<input type="radio" name="group1" value="2"/>()2<br/>
<input type="radio" name="group1" value="3"/>()3<br/>
<input type="radio" name="group1" value="4"/>()4

How much is 4+2?<br/>
<input type="radio" name="group1" value="8"/>()8<br/>
<input type="radio" name="group1" value="2"/>()2<br/>
<input type="radio" name="group1" value="6"/>()6

「2」と呼ばれる2つの値があるため、何も起こりません。そこで、最初に文をチェックしてから答えをマークするようにコードを変更しようとしました(しかし、私はそれをあまりよく習得していません)...

if(label=document.evaluate('//label[@value="How much is 1+1?"]',document,null,9,null).singleNodeValue)&&(radio=document.evaluate('//input[@type="radio" and @value="2"]',document,null,9,null).singleNodeValue)
radio.checked=true;

私の意図は、「1 + 1はいくらですか?」を含む値でラベルをチェックする2番目の条件を追加することでした。

誰かがそれを行う方法について私を導くことができますか?

編集:サンプルリンク: Googleドキュメントフォーム

ページコードは次のようになります。ラベル:

<label class="ss-q-title" for="entry_0">How much is 1+1
<span class="ss-required-asterisk">*</span></label>

ラジオ:

<ul class="ss-choices"><li class="ss-choice-item"><label class="ss-choice-label"><input name="entry.0.group" value="2" class="ss-q-radio" id="group_0_1" type="radio">
2</label></li> <li class="ss-choice-item"><label class="ss-choice-label"><input name="entry.0.group" value="3" class="ss-q-radio" id="group_0_2" type="radio">
3</label></li> <li class="ss-choice-item"><label class="ss-choice-label"><input name="entry.0.group" value="4" class="ss-q-radio" id="group_0_3" type="radio">
4</label></li>
</ul>
4

1 に答える 1

0

<lable>気になる(またはテキストノード)の兄弟に続いて、最も近いラジオボタンを見つける必要があります。

jQueryを使用すると、この種の作業が簡単になります。jQueryドキュメント、特にSelectorsセクションTraversingセクションを参照しください。

質問の新しいHTML(リンクされたGoogleドキュメント)に基づいて、適切なボタンを選択する完全なGreasemonkeyスクリプトを次に示します。

// ==UserScript==
// @name        YOUR_SCRIPT_NAME
// @description Auto select rpt radio button
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant       GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change introduced
    in GM 1.0.   It restores the sandbox.
*/
//-- Note that :contains() is case-sensitive
var questionLabel   = $(
    "label.ss-q-title:contains('How much is 1+1') ~ ul.ss-choices"
).first ().find ("input[type=radio][value=2]");
questionLabel.prop ('checked', true);


jsFiddleで実際のコードを 確認することもできます。

于 2012-11-11T13:11:26.320 に答える