这里主要通过dom对象,用innerHTML或appendChild来创建多个表单。但是要注意的是element.innerHTML会将element原来的代码覆盖,而appendchild会在element中进行追加。
参考
DOM向HTML中添加元素Failed to execute ‘appendChild’ on ‘Node’: parameter 1 is not of type 'Node’问题js中appendChild()用法解决JS 中 innerHTML is not a function ... <div id="selectAdd"> <div class="parametersetup_title">所选特征:</div> <div class="parametersetup_content"> <div id="bbb"> <select id="Feature" name="Feature"> <%--<% for(int i=1;i<=inputdata.getdimension();i++)--%> <%--{%>--%> <%--<option value="<%= String.valueOf(i)%>"--%> <%--<%if(i==1) {%>selected<%}%>><%= inputdata.getcolname(i)%>--%> <%--</option>--%> <%--<% }%>--%> </select> <input type="button" value="添加" onclick="add()"/> </div> </div> </div> ... <script type="text/javascript"> //将java数组转化成json,可和js进行类型转换 var featureName = <%= featureName%>; //不知道为啥子不能用el表达式,只能用jsp表达式 //console.log(featureName) //判断"数据序列"选了什么,避免特征选择和数据序列选择重复 var sequenceId = document.getElementById("Sequence").selectedIndex; //console.log((sequenceId)) innerHTMLStr = ""; if(sequenceId == 0){ var k = 0; for (var i = 1; i < featureName.length; ++i){ if(k == 1){ innerHTMLStr += "<option value =" + (i + 1) + "selected>" + featureName[i] + "</option>"; }else{ innerHTMLStr += "<option value =" + (i + 1) + ">" + featureName[i] + "</option>"; } } }else{ var k = 0; for (var i = 0; i < featureName.length; ++i){ if(k == 0){ innerHTMLStr += "<option value =" + (i + 1) + "selected>" + featureName[i] + "</option>"; }else if(k != sequenceId){ innerHTMLStr += "<option value =" + (i + 1) + ">" + featureName[i] + "</option>"; } } } document.getElementById("Feature").innerHTML = innerHTMLStr; function add(){ var dom1 = document.createElement('div'); dom1.className = 'parametersetup_title'; document.getElementById("selectAdd").appendChild(dom1); var dom2 = document.createElement('div'); dom2.className = 'parametersetup_content'; var str = "<select>"; innerHTMLStr = ""; if(sequenceId == 0){ var k = 0; for (var i = 1; i < featureName.length; ++i){ if(k == 1){ innerHTMLStr += "<option value =" + (i + 1) + "selected>" + featureName[i] + "</option>"; }else{ innerHTMLStr += "<option value =" + (i + 1) + ">" + featureName[i] + "</option>"; } } }else{ var k = 0; for (var i = 0; i < featureName.length; ++i){ if(k == 0){ innerHTMLStr += "<option value =" + (i + 1) + "selected>" + featureName[i] + "</option>"; }else if(k != sequenceId){ innerHTMLStr += "<option value =" + (i + 1) + ">" + featureName[i] + "</option>"; } } } str += innerHTMLStr + "</select>"; console.log(str); dom2.innerHTML = str; document.getElementById("selectAdd").appendChild(dom2); } </script>运行效果:
参考JS定义二维数组的三种方法
js在接收java的JSON数据(假设为arr)时,需要对数据进行split,但是直接用会出现问题,需要将arr转成字符串(toString())参考value.split is not a function 的原因
实现功能:
子页面resultDrivenBOOST.jsp给主页面BOOST.jsp传值主页面获取子页面的值,修改表单数据,并实现表单提交参考
关于使用iframe的父子页面进行简单的相互传值
js之iframe子页面与父页面通信
参考用js判断复选框(checkbox)是否选中的问题
参考js阻止表单提交默认行为的两种方式
js通过input type="file"获取文件名方法
JS-读取文件内容