1

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

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

1 回答 1

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

于 2012-12-05T01:33:39.587 回答