伊夫隐藏/显示选择框一直在尝试用一个未经测试函数,贾斯汀·约翰逊编码(再次感谢队友), 但香港专业教育学院与IE浏览器的错误一直在挣扎。 在JavaScript中我是一个开山人。问题与IE7/8
基本上会发生什么情况是这样的:
- 用户选择从一个选择框的选项。
- 其他相应的选择框变得可见。
- 如果还有其他选择框在早些时候选择,请将其隐藏。
一切都在Firefox确定。我改变选择框,一切正常。 但是,当我尝试在IE7/8中使用它不会改变任何东西!
我用option9.style.cssText='display: none';
代替option2.style.display = "none";
的,但它不工作的。
下面是代码(不是所有的情况下,选择在这段代码,阅读目的和代码需要优化,我将做到这一点以后):
var attachEvento = function(node, event, listener, useCapture) {
// Method for FF, Opera, Chrome, Safari
if (window.addEventListener) {
node.addEventListener(event, listener, useCapture || false);
}
// IE has its own method
else {
node.attachEvent('on'+event, listener);
}
};
// Once the window loads and the DOM is ready, attach the event to the main
attachEvento(window, "load", function() {
var main_select = document.getElementById("tipos_evento");
var option1 = document.getElementById("temas_conferencias"),
option2 = document.getElementById("temas_cursos"),
option3 = document.getElementById("temas_provas"),
option4 = document.getElementById("temas_visitas"),
option5 = document.getElementById("temas_ciencias"),
option6 = document.getElementById("temas_dancas"),
option7 = document.getElementById("temas_exposicoes"),
option8 = document.getElementById("temas_multi"),
option9 = document.getElementById("temas_musica"),
option10 = document.getElementById("temas_teatro"),
option11 = document.getElementById("temas_cultura"),
option12 = document.getElementById("temas_desporto"),
option13 = document.getElementById("temas_todos");
//initialize with all the select boxes hidden except one
option1.style.cssText='display: none';
option2.style.cssText='display: none';
option3.style.cssText='display: none';
option4.style.cssText='display: none';
option5.style.cssText='display: none';
option6.style.cssText='display: none';
option7.style.cssText='display: none';
option8.style.cssText='display: none';
option9.style.cssText='display: none';
option10.style.cssText='display: none';
option11.style.cssText='display: none';
option12.style.cssText='display: none';
option13.style.cssText='display: block';
var selectHandler = function() {
// Show and hide the appropriate select's
switch(this.value) {
case "8":
// Conferências/colóquios
option1.style.display = "block";
option2.style.display = "none";
option3.style.display = "none";
option4.style.display = "none";
option5.style.display = "none";
option6.style.display = "none";
option7.style.display = "none";
option8.style.display = "none";
option9.style.display = "none";
option10.style.display = "none";
option11.style.display = "none";
option12.style.display = "none";
option13.style.display = "none";
break;
case "10":
// Cursos/workshops
option1.style.cssText='display: none';
option2.style.cssText='display: block';
option3.style.cssText='display: none';
option4.style.cssText='display: none';
option5.style.cssText='display: none';
option6.style.cssText='display: none';
option7.style.cssText='display: none';
option8.style.cssText='display: none';
option9.style.cssText='display: none';
option10.style.cssText='display: none';
option11.style.cssText='display: none';
option12.style.cssText='display: none';
option13.style.cssText='display: none';
break;
case "7":
// provas
option1.style.cssText='display: none';
option2.style.cssText='display: none';
option3.style.cssText='display: block';
option4.style.cssText='display: none';
option5.style.cssText='display: none';
option6.style.cssText='display: none';
option7.style.cssText='display: none';
option8.style.cssText='display: none';
option9.style.cssText='display: none';
option10.style.cssText='display: none';
option11.style.cssText='display: none';
option12.style.cssText='display: none';
option13.style.cssText='display: none';
break;
case "12":
// ciencia
option1.style.cssText='display: none';
option2.style.cssText='display: none';
option3.style.cssText='display: none';
option4.style.cssText='display: none';
option5.style.cssText='display: block';
option6.style.cssText='display: none';
option7.style.cssText='display: none';
option8.style.cssText='display: none';
option9.style.cssText='display: none';
option10.style.cssText='display: none';
option11.style.cssText='display: none';
option12.style.cssText='display: none';
option13.style.cssText='display: none';
break;
default:
// Hide all
option1.style.cssText='display: none';
option2.style.cssText='display: none';
option3.style.cssText='display: none';
option4.style.cssText='display: none';
option5.style.cssText='display: none';
option6.style.cssText='display: none';
option7.style.cssText='display: none';
option8.style.cssText='display: none';
option9.style.cssText='display: none';
option10.style.cssText='display: none';
option11.style.cssText='display: none';
option13.style.cssText='display: block';
}
};
// Use the onchange and onkeypress events to detect when the
// value of main_select has changed
attachEvento(main_select, "change", selectHandler);
attachEvento(main_select, "keypress", selectHandler);
});
感谢ü。
这里是HTML。
<div class="pesquisa-event-select"><!-- pesquisa select-boxs -->
<p>
<label for="tipo">tipo de evento </label>
<select id="tipos_evento">
<option value="104">todos</option>
<option value="8">Conferências/Colóquios</option>
<option value="10">Cursos/Workshops</option>
<option value="7">Provas académicas</option>
<option value="9">Visitas/Observações</option>
<option value="12">Ciência(outros)</option>
<option value="2">Danças</option>
<option value="1">Exposições</option>
<option value="3">Multidisciplinar</option>
<option value="4">Música</option>
<option value="5">Teatro</option>
<option value="6">Cultura(outros)</option>
<option value="48">Desporto</option>
</select>
</p>
<div id="temas_todos">
<p>
<label for="Tema">tema de evento </label>
<select>
<option value="">todos</option>
<xsl:for-each select="temas_todos/TemasEventos/Row">
<xsl:sort select="TipoEvento"/>
<option value="{Numero}">
<xsl:value-of select="TipoEvento" />_
<xsl:value-of select="TemaEvento" />
</option>
</xsl:for-each>
</select>
</p>
</div>
<div id="temas_conferencias">
<p>
<label for="Tema">tema de evento</label>
<select>
<option value="">todos</option>
<xsl:for-each select="temas_conferencias/TemasEventos/Row">
<xsl:sort select="TemaEvento"/>
<option value="{Numero}">
<xsl:value-of select="TemaEvento" />
</option>
</xsl:for-each>
</select>
</p>
</div>
<div id="temas_cursos">
<p>
<label for="Tema">tema de evento</label>
<select>
<option value="">todos</option>
<xsl:for-each select="temas_cursos/TemasEventos/Row">
<xsl:sort select="TemaEvento"/>
<option value="{Numero}">
<xsl:value-of select="TemaEvento" />
</option>
</xsl:for-each>
</select>
</p>
</div>
感谢üCMS。我已经插入了,但它并不工作不幸。 也许我不能成为程序员..我不明白****它 – dutraveller 2009-08-07 17:37:27
你不必插入上面的代码,你应该只*改变*这一行:* switch(this.value){* to :*开关(main_select.value){* – CMS 2009-08-07 18:16:32
是的,我只是改变了那条线。我很笨,但不soooo愚蠢:) – dutraveller 2009-08-07 18:32:17