0

getMoreInfoResults() 関数がラジオ ボタンの値 (選択されている場合) を GET 要求に渡さない理由がわかりません。理由を知っている人はいますか?

<form name="question_form">
    <input type="radio" name="vote" value="1" onclick="getVote(this.value)" />Yes<br />
    <input type="radio" name="vote" value="2" onclick="getVote(this.value)" />No<br />
    <textarea rows="3" name="moreInfo" onkeyup="getMoreInfoResults(document.question_form.vote.value, this.value)" /></textarea><br />
    <input type="submit" value="Submit" />
    <div id="otherAnswers"></div>
</form>

これは私のJavaScriptです:

function getMoreInfoResults(vote, input) {

if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  document.getElementById("otherAnswers").innerHTML=xmlhttp.responseText;
}
}

xmlhttp.open("GET","phpPoll/phpPoll_userDefined/functions/getMoreInfoResults.php?vote=" + vote + "&moreInfo=" + input,true);
xmlhttp.send();
}

ありがとう。

4

1 に答える 1

2

document.question_form.vote式は、NodeListオブジェクトではなくオブジェクトを提供しますNode。明らかに、そのvalueプロパティはundefinedです。

考えられる回避策の 1 つは、チェックされたラジオ ボタンの値を取得する関数を作成することです。

function getCheckedValue(radioNodes) {
    for (var i = 0, l = radioNodes.length; i < l; i++) {
        if (radioNodes[i].checked) {
            return radioNodes[i].value;
        }
    }
}

...値を直接クエリする代わりに使用します。

onkeyup="getMoreInfoResults(getCheckedValue(document.question_form.vote), this.value)" 
于 2012-09-13T13:26:39.707 に答える