onClick不会触发,chrome / safari

时间:2012-12-05 00:50:31

标签: javascript html ipad safari onclick

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

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

1 个答案:

答案 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属性。