这个小提琴不是完整的代码集。然而,这是我遇到问题的孤立代码。
这适用于所有版本的IE,并且无法在Safari / Chrome中使用。具体来说,我试图让这个在IPAD上工作。选择按钮会按下,功能将不会执行任何操作,并且基本上会卡在那里......任何人都有任何建议吗?
function selectStatements(f)
{
var selectedArray = new Array();
var selObj = document.getElementById('statementGroups');
var i = 1;
var count = 0;
for (i=0; i<selObj.options.length; i++)
{
if ( (selObj.options[i].selected) && count<20 )
{
selectedArray[count] = selObj.options[i].value;
count ++;
}
}
f.chosenStatements.value = selectedArray;
document.glStatementForm.glaction.value = "updateChosenList";
document.glStatementForm.action="glstsend.shtml";
document.glStatementForm.method="POST";
document.glStatementForm.submit();
}
</script>
HTML:
#IF EXPR = (clientState == "setList") -->
<div id="openBox2">
<tr>
<td VALIGN="top"><B>Statements:</B>
<td VALIGN="top">
<SELECT NAME="statementGroups" SIZE=10 MULTIPLE> <!--
#SET NAME = ldx VALUE = 0 --><!--
#WHILE EXPR=(ldx < disp_list_count) -->
<OPTION VALUE= "(*disp_dropdown_value[ldx]*)">(*disp_dropdown_text[ldx]*) <!--
#SET NAME = ldx VALUE = ldx + 1 --><!--
#ENDWHILE -->
</SELECT>
<tr>
<td> <BR />
<td> <INPUT TYPE=BUTTON VALUE="Select" STYLE="font:8pt Arial" ONCLICK="selectStatements(this.form);">
<!--
#ENDIF -->
</table>
</div>
答案 0 :(得分:1)
首先,你有
var selObj = document.getElementById('statementGroups');
可能在HTML
中引用此元素<SELECT NAME="statementGroups" SIZE=10 MULTIPLE>
但此元素没有分配任何ID。有信心的浏览器会找到你需要的
<select name="statementGroups" id="statementGroups" size="10"
multiple="multiple">
第二,
document.glStatementForm...
可能是指具有id或名称“glStatementForm”的表单。但这并不是引用它的常用方法,除非您以某种方式故意将其添加到文档命名空间中。我不确定访问表单字段最符合跨浏览器的方式是什么,但可能类似于:
var glsForm = document.getElementById('glStatementForm'),
glsForm.elements['action'].value = "updateChosenList";
glsForm.action = "glstsend.shtml";
glsForm.method = "POST";
glsForm.submit();
并确保在HTML中设置了glStatementForm的id属性。