【发布时间】:2015-03-13 06:58:08
【问题描述】:
我对这一切都很陌生,如果这是一个愚蠢的问题,请原谅我!当用户单击相关按钮时,我有一些 JavaScript 可以将厘米转换为英寸、厘米转换为米、米转换为英寸等。我想隐藏不相关的按钮。即当用户选择以英寸为单位的输入单位时,“厘米到英寸”是无关紧要的,应该隐藏。
我的代码在 Firefox 中运行良好,只有一半在 chrome 中运行。当用户从下拉列表中选择单位时,它应该适当地显示/隐藏按钮。但在 Chrome 中,它仅在您第一次选择单位时起作用,并且在选择其他单位时不会更新。
这是 HTML:
<select id="unit" onchange="TriangleArea()" class="unitOut">
<option value="" id="unitCSS" onClick="CreateButtons()">Select Unit...</option>
<option value="CM" onClick="CreateButtons()">Centimeters</option>
<option value="M" onClick="CreateButtons()">Meters</option>
<option value="Inch" onClick="CreateButtons()">Inches</option>
</select>
这里是 JavaScript:
function CreateButtons(){
if (unit == "CM" )
{
document.getElementById("button1").setAttribute("type", "button"); // shows button1 (CM to Inch)
document.getElementById("button2").setAttribute("type", "hidden"); // hides button2 (Inch to CM)
document.getElementById("button3").setAttribute("type", "button"); // shows button3 (CM to M)
document.getElementById("button4").setAttribute("type", "hidden"); // hides button4 (M to CM)
document.getElementById("3cube").style.visibility="visible";
}
else if (unit =="Inch")
{
document.getElementById("button1").setAttribute("type", "hidden");
document.getElementById("button2").setAttribute("type", "button");
document.getElementById("button3").setAttribute("type", "hidden");
document.getElementById("button4").setAttribute("type", "hidden");
document.getElementById("3cube").style.visibility="visible";
}
else if (unit =="M")
{
document.getElementById("button1").setAttribute("type", "hidden");
document.getElementById("button2").setAttribute("type", "hidden");
document.getElementById("button3").setAttribute("type", "hidden");
document.getElementById("button4").setAttribute("type", "button");
document.getElementById("3cube").style.visibility="visible";
}
else if (unit =="")
{
document.getElementById("button1").setAttribute("type", "button");
document.getElementById("button2").setAttribute("type", "button");
document.getElementById("button3").setAttribute("type", "button");
document.getElementById("button4").setAttribute("type", "button");
document.getElementById("3cube").style.visibility="hidden";
}
}
unit 变量在文档正文中以全局范围声明。它设置为<select id="unit"> 的值,代码为unit = document.getElementById("unit").value,并且工作正常。那么为什么 Firefox 每次用户更改单位选项时都会隐藏/显示按钮,而 Chrome 只会在第一次显示正确的按钮而不在单位更改时更新?
解决了! onchange="CreateButtons()" 需要是 <select> 的属性,而不是 <option>。感谢您的所有时间和帮助!
【问题讨论】:
-
对不起,我应该澄清一下。
unit变量设置为选定<option>的值,即无,CM、M 或英寸。使用代码unit = document.getElementById("unit").value
标签: javascript google-chrome input