【问题标题】:onClick won't fire, chrome/safarionClick 不会触发,chrome/safari
【发布时间】:2012-12-05 09:33:39
【问题描述】:

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

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

【问题讨论】:

  • 天哪,这代码是谁写的?
  • 缺少一些 html 标签:&lt;table&gt;&lt;/tr&gt;&lt;/td&gt;

标签: javascript html ipad safari onclick


【解决方案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 属性。

【讨论】:

  • 谢谢斯图尔特。看起来 id="statementGroups" 添加解决了我的问题。我很欣赏建设性的回应。
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多