jsp中的变量作用域和控制多表单提交问题

在jsp中用getElementsByName 或者getElementsByTagName获取多个标签,处理时往往会遇到各种问题,其中有很大一部分原因是你忽略了变量的作用域。今天以控制多表单提交为例。做简单的说明,如果有不当之处,望见谅!

功能

这里写图片描述
点击第一组预定1或2时提交表单1,跳转到页面a.html,点击第二组预定1或2时提交表单2,跳转到指定页面a.html;点击第一组或者第二组预定1,会将卧铺改编为硬座.

代码

1.html代码

"2.html" method="post" name="buyform"> 第一组:type="button" name="choice1" value="预定1" /> 表单1type="text" name="stype" value="卧铺"/> type="button" name="choice2" value="预定2"/>
"2.html" name="buyform"> 第二组:type="button" name="choice1" value="预定1"/> 表单2type="text" name="stype" value="卧铺"/> type="button" name="choice2" value="预定2"/>

2.jsp代码

 <script>
window.onload=function(){
      

var bform  = document.getElementsByName("buyform"); 
 var bchoice =document.getElementsByName("stype");
 var bchoice2 = document.getElementsByName("choice2");
 var bchoice1 = document.getElementsByName("choice1");
  for(i=0;i< bchoice1.length;i++){
      bchoice1[i].index=i;
      bchoice2[i].index=i;
  bchoice1[i].onclick= function(){
        
  bchoice[this.index].value= "硬座";
 bform[this.index].submit();
  }
   bchoice2[i].onclick= function(){
      
    bform[this.index].submit();    
  }
  }
}

分析

jsp中的变量作用域和控制多表单提交问题_第1张图片
在这里由于for循环里的i并未提前定义,因此只能在for循环里使用。并且在即使是位于for循环内部的事件函数也无法获取,因此需要通过,自定义当前标签的index属性存储i值,在需要时通过this.index取出(注意的是this代表当前事件作用的标签

你可能感兴趣的:(表单,jsp,标签)