onClick 不会触发,chrome/safari



这个小提琴不是完整的代码集。但是,这是我遇到问题的孤立代码。

这适用于所有版本的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 属性。

最新更新