0
<script type="text/javascript">
function appearbox(){
document.getElementById('hotelparoikia').style.display = 'block';
document.getElementById('desc1').style.display = 'block';
document.getElementById('desc2').style.display = 'block';
document.getElementById('typeofroom').style.display = 'block';
}
</script>

ご覧のとおり、上記はHTMLファイルにあるjavascriptコードです。

<form>
<table>
<tr><th>Επιλέξτε Περιοχή</th><th style="display:none;" id="desc1">Επιλέξτε ξενοδοχειακό συγκρότημα</th><th style="display:none;" id="desc2">Επιλέξτε τύπο δωματίου</th></tr>
<tr><td align="center">
<select id="hotelarea" onFocus="appearbox">
<option value="0" selected="selected" onFocus="appearbox" >ΠΑΡΟΙΚΙΑ</option>
<option value="1" onFocus="appearbox" >ΝΑΟΥΣΑ</option>
<option value="2" onFocus="appearbox" >ΧΡΥΣΗ ΑΚΤΗ</option>
<option value="3" onFocus="appearbox" >ΠΙΣΩ ΛΙΒΑΔΙ</option>
<option value="4" onFocus="appearbox" >ΑΛΙΚΗ</option>
</select>
</td>
<td align="center">
<select style="display:none;" id="hotelparoikia">
<option value="0" selected="selected">PAROS BAY HOTEL</option>
<option value="1">MARISA ROOMS</option>
<option value="2">AROKARIA BEACH</option>
<option value="3">REPPAS APARTMENTS</option>
<option value="4">VASSILIKI ROOMS</option>
</select>
</td>
<td align="center">
<select style="display:none;" id="typeofroom">
<option value="0" selected="selected">ΜΟΝΟΚΛΙΝΟ</option>
<option value="1">ΔΙΚΛΙΝΟ</option>
<option value="2">ΤΡΙΚΛΙΝΟ</option>
<option value="3">ΤΕΤΡΑΚΛΙΝΟ</option>
</select>
</td>
</tr>
</table>
</form>

これは私のHTMLファイルのコードの別の部分です

ご覧のとおり、DropDownListがOnFocusの場合、appearbox()が実行され、一部の要素が表示されますが、実行されません。誰か助けてもらえますか?

4

4 に答える 4

1

() がありません

jQueryの使用、jsロジックの分離などに関する他の多くの提案は、概念的にはおそらく良いアイデアです。しかし、私が見る限り、あなたのhtmlの本当の問題はここにあります->

<select id="hotelarea" onFocus="appearbox">

それはする必要があります->

<select id="hotelarea" onFocus="appearbox()">

appearbox は単なる関数参照であるためです。()本質的には、「参照が指す関数を実行する」ということです。

それ以外では、<script>タグがヘッド (またはフォームの前にロードされる他の場所) にあることを確認すると、正常に機能するはずです。

それでも問題が解決しない場合は、ブラウザー (おそらく F12) で開発者コンソールを開き、コンソールをチェックして、選択ボックスにフォーカスを移したときにエラーが発生するかどうかを確認します。コードをほぼそのまま .html ファイルに入れました (script タグを head 内に、form タグを body 内に配置し、() を onFocus リスナーに追加しました。それ以外の場合は、コピー ペースト ジョブでした)、動作します。 、私が知る限り、問題は次のいずれかです。

  • 行方不明 ()
  • onFocus リスナーの作成時に script タグがまだロードされていない場合、未定義のエラーが発生します
  • あなたのページの他のいくつかのものは、何かの定義を上書きするなどのファンキーなことをしていますappearbox-かなりありそうにありませんが、それでも、htmlファイルからページ全体をそのまま貼り付ける(またはjsfiddleリンクを提供する)と、回答者ははるかに良くなります助けるために装備。

ああ、それが何であるかについての別の考えがあります (ページの残りの部分が見えないため、純粋な推測です)。おそらくフォームはページに複数回表示されますか? または、他の理由で、ページに同じ ID を持つ他の要素がありますか? その場合、getElementById() は要素を返すことができません。ID はページ固有でなければなりません。

于 2013-01-15T02:25:52.500 に答える
0
onFocus="javascript:appearbox()"

しかし正直なところ、jQueryの使用を開始してください。htmlからすべてのonFocusを削除し、jsを次のように置き換えます。

$(document).ready(function() {
  $("#hotelarea").focus(function() {
    $("#hotelparoikia").css("display", "block"); // or just .show()
    ...        
  });
});
于 2013-01-15T01:28:09.877 に答える
0

以下のコードは私にとっては問題なく機能します:

<select id="hotelarea" onFocus="javascript:appearbox();">

オプションタグにonFocusイベントは必要ありません。選択タグ内のイベントは、1つだけで十分です。

于 2013-01-15T01:42:41.917 に答える