日期:2014-05-16  浏览次数:20391 次

关于动态生成的文本域取值问题,谢谢。
关于动态生成的文本域取值问题,谢谢。


 //js中动态拼接出的下面的html代码
   <input type="hidden" value="${student.id}"/>
   <input type="hidden" value="${student.name}"/>
   <input type="hidden" value="${student.age}"/>


这些隐藏域都是通过取后台值,然后动态生成的,也就是说个数不确定,我现在想问的是怎么取到这些的值啊,谢谢。然后组成一个字符串,也就是说类似下面的
student1.id:student1.name:student1.age;student2.id:student2.name:student2.age;...后面还有好多好多
这个 冒号和分号就是为了区别,可以任意搞,我只是为了方便。
1.取值
2.组成字符串
请问咋弄 谢谢。
可以用jquery或者原生的都行。

------解决方案--------------------
你生成的时候可以编号如
<div id="contaniner"  style="display:none">
<div style="display:none">
<input type="hidden" value="${student.id}"/>
<input type="hidden" value="${student.name}"/>
<input type="hidden" value="${student.age}"/>
</div>...
....
...
<div style="display:none">
<input type="hidden" value="${student.id}"/>
<input type="hidden" value="${student.name}"/>
<input type="hidden" value="${student.age}"/>
</div>


</div>

然后进行循环
var s=""
var ds = document.getElementById("contaniner");
for(i=0;i<ds.length;i++){
s +="student" + i + ":" + ds[i].getElementByTagName("INPUT")[0].value + "," + ds[i].getElementByTagName("INPUT")[1].value
}

类似这样

当然,还有很多其他的方法
------解决方案--------------------
<div id="contaniner"  style="display:none">只加一次

类似这样
<div id="contaniner"  style="display:none">
<div style="display:none"><input...></div>
<div style="display:none"><input...></div>
<div style="display:none"><input...></div>
....
</div>

var ds = document.getElementById("contaniner");我写错了。应该是
var ds = document.getElementById("contaniner").getElementsByTagName("div");
------解决方案--------------------

var vals = [];
$("input[type='hidden']").each(function(i,el){
    vals.push($(el).val());
});
var str = vals.join(":");

------解决方案--------------------
从后台取值拼html应该用ajax再循环创建吧。
------解决方案--------------------
引用:

var vals = [];
$("input[type='hidden']").each(function(i,el){
    vals.push($(el).val());
});
var str = vals.join(":");

正解。