-5

これは私が持っているものです:

<script type="text/javascript">
function toggle(value){
  if(value=='show') { document.getElementById('busblock').style.display='block'; }
               else { document.getElementById('busblock').style.display='none'; }
}
</script>

<script type="text/javascript">
 function toggle(value){
  if(value=='show') { document.getElementById('guyblock').style.display='block'; }
           else { document.getElementById('guyblock').style.display='none'; }
  }
</script>
</head>
<body>

<form action="http://qa.onlinelabtests.com/guestlist.php" method="post">
First Name: <input type="text" name="fname" /> <br />
Last Name: <input type="text" name="lname" /> <br />
E-mail: <input type="email" name="email" /> <br />
Gender: <br />
<input type="radio" name="gender" value="male" onclick="toggle('show');">&nbsp;&nbsp;Male <br />
<input type="radio" name="gender" value="female" onclick="toggle('hide');">&nbsp;&nbsp;Female <br />

<div id="guyblock" style="display:none">
Referred By
<select name="tke">
<option value="915">Cameron</option>
<option value="930">Edgar</option>
<option value="950">JD</option>
<option value="1010">Estaban</option>
</select>
</div>

<div>
Bus Transportation <br />
<input name="bus" type="radio" value="yes" onclick="toggle('show');"> &nbsp;&nbsp;Yes<br />
<input name="bus" type="radio" value="no" onclick="toggle('hide');">&nbsp;&nbsp;No<br />
</div>

<div id="busblock" style="display:none">
Bus Time
<select name="departtime">
<option value="915">9:15PM</option>
<option value="930">9:30PM</option>
<option value="950">9:50PM</option>
<option value="1010">10:10PM</option>
</select>
</div>

<input type="submit" value="Register" />
</form>

ただし、一度に機能するのは 1 つだけです (女性とバスへの両方が選択されている場合、最初のものは非表示になります)

ありがとう!

4

3 に答える 3

1

両方の関数の名前はtoggle()です。名前を変更するか、変数を動的に処理できるように再コーディングする必要があります。

名前の変更は次のようになります。

 function toggleMale(value){
 ...
 function toggleFemale(value){

より良い解決策は、次のように関数を動的にすることです。

function toggle(block, value) {
   if(value=='show') { 
      document.getElementById(block).style.display='block';
   }
   else {
      document.getElementById(block).style.display='none';
   }
}

これは次のように呼び出されます。

onclick="toggle('busblock', 'show');"

またはその趣旨の何か。

于 2012-10-22T01:56:52.167 に答える
1

2 番目の関数名を宣言すると最初の関数名が上書きされるため、2 つの異なる関数名が必要です。名前をより宣言的なもの (たとえば、toggleGender) に変更します。ここで私の変更を参照してください。

于 2012-10-22T01:57:35.697 に答える
0
  1. 同じ名前の 2 つの JS 関数を定義しているため、最後の関数のみが機能します。
  2. そこにjQueryをコーディングしているのを見ることができません。Javascriptを使用しているだけです
于 2012-10-22T01:55:13.817 に答える