读书人

关于document.表单名 写法纳闷

发布时间: 2013-02-04 10:50:22 作者: rapoo

关于document.表单名 写法疑惑

case1:


<form name="fm">
<input type="text" name="cont1"/>
<input type="button" value="test" onclick="sub();"/>
</form>
<script type="text/javascript">
function sub() {
var cont1 = 'cont1'; //这样写时,可以正确得到文本框里的值
alert(cont1);
alert( "name: " + document.fm.cont1.value);
}
</script>


case2:

<form name="fm">
<input type="text" name="cont1"/>
<input type="button" value="test" onclick="sub();"/>
</form>
<script type="text/javascript">
function sub() {
var cont = 'cont1';
alert(cont);
alert( "name: " + document.fm.cont.value); //这样写便会出错,TypeError:
//document.fm.cont is undefined
}
</script>



case3:

<form name="fm">
<input type="text" id="cont1" name="cont1"/>
<input type="button" value="test" onclick="sub();"/>
</form>
<script type="text/javascript">
function sub() {
var cont = 'cont1';
alert(cont);
alert( "id: " + document.getElementById(cont).value);
alert( "name: " + document.fm.cont.value);
}


</script>




为什么,case3写法可以通过id获取,而case2却不能呢,是不是document.表单名写法时,后面的那个input的name名是从DOM树中查找,而不能通过变量来获取???




[解决办法]
通过name的值来获取,case2/case3楼主看清楚来你的name值就不对,是cont1,不是cont

去属性时通过.操作符和[]操作符是不一样的

[]操作符号可以为变量,.不行
            function sub() {
var cont = 'cont1';
alert(cont);
alert("id: " + document.getElementById(cont).value);
alert("name: " + document.fm[cont].value);//////
}

[解决办法]
根据表单名取表单用document.forms吧,
document.forms["fm"].cont.value

读书人网 >JavaScript

热点推荐