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树中查找,而不能通过变量来获取???   

解决方案 »

  1.   

    通过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);//////
                 }
      

  2.   

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

  3.   

    哦,明白了,谢谢楼上两位朋友的回答
    <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);        
                alert( "name: " + document.forms['fm'][cont].value);        
            }
            </script>