我有一个sumbit按钮从foreach jstl中的表达式语言中获取他的值,如下图所示,我希望当点击三个按钮分别获取它们的值到三个隐藏输入时,但是在运行时这个代码返回表达式语言中的第一个值
<script>
function myfunction()
{
if(document.getElementById('demo1').value=""){
document.getElementById('demo1').value=document.getElementById('btn').value;
}else if(document.getElementById('demo2').value=""){
document.getElementById('demo2').value=document.getElementById('btn').value;
}else
{
document.getElementById('demo3').value=document.getElementById('btn').value;
}
}
</script>
<html>
<form:form action="Search" method="post">
<input type="hidden" name="answer1" id="demo1">
<input type="hidden" name="answer2" id="demo2">
<input type="hidden" name="answer3" id="demo3">
<c:forEach var="item" items="${group.subGroups}">
<input id="btn" type="submit"
value="${item.subGroupName}" onclick="myfunction()">
</c:forEach>
<form:form>
</html>
答案 0 :(得分:2)
首先,使用==
而非=
进行相等性测试,用于分配值。所以
if(document.getElementById('demo1').value=""){
[...]
}
成为
if (document.getElementById('demo1').value == "") {
[...]
}
然后,如果您的JSTL forEach
(<input id="btn"...>
个)输出了多个按钮,则必须提供多个id
或使用其他方式引用它们;否则,浏览器如何知道您尝试访问哪个按钮?
另一种方式是:
function myfunction(element)
{
if (document.getElementById('demo1').value == ""){
document.getElementById('demo1').value = element.value;
} else if (document.getElementById('demo2').value == ""){
document.getElementById('demo2').value = element.value;
} else {
document.getElementById('demo3').value = element.value;
}
}
[...]
<input type="submit" value="${item.subGroupName}" onclick="myfunction(this)">