以下使用带有onclick按钮的javascript的简单表单在Firefox中不起作用(我有版本7)但在IE,Chrome和Safari中工作正常。 我错过了什么?
<head>
<script type="text/javascript">
function result() {
alert(calc.input.value);
}
</script>
</head>
<body>
<form name="calc" action="">
<input class="cInput" type="text" name="input" size="16" /><br/>
<input type="button" class="cButton" name="seven" value="1" onclick="calc.input.value += '1'" />
<input type="button" class="cButton" name="equal" value="=" onclick="result()" /><br/>
</form>
</body>
答案 0 :(得分:1)
<script type="text/javascript">
var calc;
function result() {
calc = document.forms['calc'];
alert(calc.input.value);
}
</script>
答案 1 :(得分:1)
我错过了什么?
您缺少IE将元素名称和ID添加为全局变量。某些条件下的某些其他浏览器(有时需要文档处于怪癖模式)会复制该habbit,有些则不会。
因此,在IE(以及其他一些)中,表单名称 calc 是引用表单的全局变量,而在其他浏览器中则不是。
Dunuyadnd的答案中的方法是一种强大的跨浏览器方式来获取对表单的引用。正式的访问方法是:
document.forms['calc'];
可以类似地访问命名表单控件:
document.forms['calc'].elements['input'];
或
document.calc.input;
小心提供与标签相同的控件名称,这有点令人困惑。此外,如果有多个具有相同名称的控件,您将获得HTML collection而不是单个元素。
您可能想了解HTMLForms及其相关元素。