2017-04-18 52 views
2

好吧,這是初學者的一個非常具體的問題,請耐心等待。如何使用單行javascript(無jQuery)檢查沒有id的單選按鈕?

我是剛剛學習繩索的新手。這裏的背景(如果你不在乎跳到下一段):我正在更新我的第一個Android應用程序,我使用MIT App Inventor 2來做到這一點。這是一個免費的在線工具,它使用所見即所得的屏幕編輯器和Blockly來創建行爲,交互等。我正在製作的應用程序使用表單加載特定網頁,併爲您填充大部分表單(具體來說,它有助於人們進入劇院表演的網上票券抽獎)。該頁面不是我自己的,所以我不能編輯HTML。但是我可以通過將單行javascript代碼插入App Inventor的Blockly一側來運行JavaScript。 Here's a relevant example of how it looks.

我已經想出瞭如何使用getElementByID()填充大部分表單。但有一組單選按鈕沒有標識。下面是HTML的少許修改的版本(這是我不能編輯):

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> 

我已經通過以下取得了一些進展。我希望能夠得到一個值(1或2)並讓它選擇相應的右鍵。我使用的Blockly後端允許我定義一個變量來插入javascript行,但是javascript本身的行必須基本上是一行。我希望以下的一種工作,如果我想價值爲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

僅供參考 - AppInventor使用[Blockly](https://developers.google.com/blockly/),而不是Scratch。我更新了問題文本。 – 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標識符,並且標識[「不能以數字,兩個連字符或連字符後跟一個數字開頭......」)(https://www.w3.org/TR/ CSS21/syndata.html#值-DEF-標識符)。所以它應該按預期工作,如果你想瞄準「兩個」,沒有引號,但與「2」不同。你可以看到[這裏]的示例(https://jsfiddle.net/adu1r2j3/2/) –

+0

正是我在找的東西。謝謝,Rion! – JPTiger

相關問題