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()">

因为出现框只是一个函数引用。这()就是本质上说的“运行引用指向的任何函数”。

除此之外,如果您确保您的<script>标签位于头部(或将在表单之前加载的任何其他位置),它应该可以正常工作。

如果仍然无法正常工作,请在浏览器中打开开发者控制台(可能是 F12)并检查控制台以查看在选择框焦点时是否有错误。我将您的代码几乎完全放在 .html 文件中(我将脚本标记放在 head 中,将 form 标记放在 body 中,我还将 () 添加到您的 onFocus 侦听器中。否则它是一个复制粘贴作业)并且它可以工作,据我所知,问题是以下之一:

  • 失踪的()
  • 创建 onFocus 侦听器时尚未加载脚本标记,您将收到未定义的错误
  • 您页面上的其他一些东西正在做一些时髦的事情,例如覆盖定义appearbox或其他东西 - 不太可能,但是,如果您从 html 文件中粘贴整个页面(或提供 jsfiddle 链接),那么您的回答者会好得多有能力提供帮助。

哦,这是关于它可能是什么的另一个想法(纯属猜测,因为我看不到您页面的其余部分)。表单是否在页面上出现多次?或者,出于任何其他原因,页面上是否还有其他元素具有相同的 ID?如果是这样,getElementById() 将无法返回元素;ID 必须是页面唯一的。

于 2013-01-15T02:25:52.500 回答
0

The code below works for me just fine:

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

You don't need onFocus events in the option tags, just one inside the select tag is fine.

于 2013-01-15T01:42:41.917 回答
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 回答
-2

这很简单。

appearbox
// just a reference to the function

appearbox()
// call the function (with no arguments)

所以:

onFocus="appearbox();"

会工作得很好。

于 2014-05-01T09:59:54.967 回答