这个小提琴不是完整的代码集。但是,这是我遇到问题的孤立代码。
这适用于所有版本的IE,不适用于Safari/Chrome。具体来说,我正在尝试让它在 IPAD 上工作。选择按钮会按下,函数不会做任何事情,基本上会卡在那里......有人有什么建议吗?
http://jsfiddle.net/Eh9QC/
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>
首先,你有
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 属性。