0

我正在研究 HTML 和 Javascript。

我有一个标签,你可以在下面看到

<label for="optGender">Gender: </label> 
<input id="optGender" type="radio" name="optGender" value="F" onclick="changeGender(this.value)">
Female
<br>
<input id="optGender" type="radio" name="optGender" value="M" onclick="changeGender(this.value)">
Male
<br>
Where do you want to live?
<br>
<select id="txtCity" name="lstCity" size="5">
<option value="06">Ankara</option>
<option value="34">Istanbul</option>
<option value="35">Izmir</option>
<option value="27">Gaziantep</option>
</select>
<br>

在我的javascript文件中,我有这个函数来检查它是否被选中

function changeGender(whichOne){

    var gender = document.forms["ProcessInfo"]["optGender"].value;
    var optGender = document.getElementById("optGender");
    var txtCity = document.getElementById("txtCity");

    if ( !document.getElementById('optGender').checked )
    {
    errMessage += "Please select your gender.\n";
    document.getElementById('optGender').checked = false;
    }
    //if ( gender == "M" ) { alert("lol");}

}

当我选择“女性”按钮时,它可以工作,不会出错。但是当我选择男性时,它给了我一个错误,我没有选择任何选项。那有什么问题?

编辑 * 我真正想做的是,如果我选择 F,列表将包含以 I 开头的城市,对于 M 它将是 G。我可以轻松处理这部分,但我被困在最简单的部分。

4

3 回答 3

3

两个输入的 ID 相同。那行不通... Document.getelementbyid 返回它找到您提供的 id 的第一个实例,这是男性输入。我认为您在这里可能想要的是选择而不是输入...

给我一秒钟,我会为你修改你的代码。

<label for="optGender">Gender: </label> 
<input id="Female" type="radio" name="optGender" value="F" onclick="changeGender(this)">
Female
<br>
<input id="Male" type="radio" name="optGender" value="M" onclick="changeGender(this)">
Male
<br>
Where do you want to live?
<br>
<select id="txtCity" name="lstCity" size="5">
<option value="06">Ankara</option>
<option value="34">Istanbul</option>
<option value="35">Izmir</option>
<option value="27">Gaziantep</option>
</select>
<br>


function changeGender(whichOne){
    var gender = whichOne.value;
    if ( gender == "M" ) { alert("lol");}
    if ( gender == "F" ) { alert("wat");}

}
于 2013-11-07T01:43:23.323 回答
0

您需要更改对讲机的 ID 并保留名称。它会工作

于 2013-11-07T01:46:02.223 回答
0

不能有 2 个相同id的元素HTML。您有 2 个具有相同 id 的元素,即optGender

于 2013-11-07T01:46:23.140 回答