2017-06-22 36 views
0

我試圖從HTML中的單選按鈕標記獲取值到JavaScript,每當我嘗試這樣做時,我將單選按鈕的長度設置爲0,返回值未定義。這裏,是我的代碼片段(值是動態的document.getElementsByName不適用於單選按鈕的動態值

<html> 
 
<body> 
 
<form> 
 
    What color do you prefer?<br> 
 
    <input type="radio" name="colors" id="red" onclick="check();">Red<br> 
 
    <input type="radio" name="colors" id="green" onclick="check();">Green<br> 
 
    <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br> 
 
    <input type="radio" name="colors" id="blue" onclick="check();">Blue<br> 
 
</form> 
 
<script> 
 
function check() 
 
{ 
 
    var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors")); 
 
} 
 
function getRadioButtonValue(radioObj) 
 
{ 
 
    var value; 
 
    var radioLength=radioObj.length; 
 
    alert(radioLength); //is 0 //for value 
 

 
    for(var i=0;i<radioLength;i++) 
 
    { 
 
     if(radioObj[i].checked) return radioObj[i]; 
 
    } 
 
} 
 
</script> 
 
</body> 
 
</html>

回答

1

您指定無線代替單選按鈕的名稱標識。 使用document.getElementsByName("colors")代替document.getElementsByName("red")

<html> 
 
<body> 
 
<form>What color do you prefer?<br> 
 
    <input type="radio" name="colors" id="red" onclick="check();">Red<br> 
 
    <input type="radio" name="colors" id="green" onclick="check();">Green<br> 
 
    <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br> 
 
    <input type="radio" name="colors"id="blue" onclick="check();">Blue 
 
</form> 
 
<script> 
 
function check() 
 
{ 
 
    var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors")); 
 
} 
 
function getRadioButtonValue(radioObj) 
 
{ 
 
    var value; 
 
    var radioLength=radioObj.length; 
 
    alert(radioLength); //is 0 //for value 
 

 
    for(var i=0;i<radioLength;i++) 
 
    { 
 
     if(radioObj[i].checked) return radioObj[i]; 
 
    } 
 
} 
 
</script> 
 
</body> 
 
</html>

+0

刪除警報不會幫助我猜。 – user7455856

+1

我認爲這是您解決問題的方法。問題是什麼? –

+1

@ user7455856不是這個答案是否足夠? – Anthony

0

閱讀Document.getElementsByName()函數將會有所幫助。與其他答案一樣,看起來您可能想要通過調用元素「id」屬性來返回收音機的值,如下所示:if(radioObj[i].checked) value=radioObj[i].id ; 下面是我相信您期望做的一個工作示例。

function check() 
 
{ 
 
var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors")); 
 
alert(isChangeReqd); 
 
} 
 

 
function getRadioButtonValue(radioObj) { 
 
var value; 
 
var radioLength=radioObj.length; 
 
alert(radioLength);//is 0//for value 
 

 
    for(var i=0;i<radioLength;i++) 
 
    { 
 
    if(radioObj[i].checked) value=radioObj[i].id ; 
 
    } 
 
    return value; 
 
}
<html> 
 
<body> 
 
<form>What color do you prefer? 
 
<br> 
 
    <input type="radio" name="colors" id="red" onclick="check();">Red<br> 
 
    <input type="radio" name="colors" id="green" onclick="check();">Green<br> 
 
    <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br> 
 
    <input type="radio" name="colors"id="blue"onclick="check();">Blue 
 
</form> 
 
</body> 
 
</html>

+0

值是未定義的,radioLength = 0 – user7455856

+0

交互。在Chrome上運行此代碼段會返回迭代次數以及id的值。 –

+0

我正在使用類似框架的struts,其中單選按鈕「value」和「id」是從java獲得的。在使用document.getElementsByName時,我將單選按鈕值設置爲「未定義」和「長度= 0」。我可以看到相同的代碼正在工作,當我給靜態值和id屬性,即簡單地定義無線標籤。 – user7455856