未捕获的SyntaxError:意外的令牌]

时间:2014-05-20 14:52:59

标签: javascript html xml button xhtml

我知道这个话题已被多次询问,因为我多次尝试解决但问题仍然存在。

HTML

<button buttontype="normal" name="submitAction" value="myFun" 
         className=""  method="" id="myFun" onclick="javascript:myFun()"/>

JavaScript

<script type="text/javascript">
function myFun(){
    alert("XXXXXXXXX");
}
</script>

我想调用 myFun 函数,但我在UI中收到Uncaught SyntaxError: Unexpected token ]错误。当我按照stackoverflow解决方案时,我可以在javaScript函数中使用html代替javascript来删除错误。

我的问题是:

  1. javascript修改为html
  2. 后,为什么我没有收到错误消息
  3. 仍然无法打印提醒消息。
  4. 更新

    <report id="1000" name="Reports : Delivery Details" sql="FROM view_sms_status_report" group="Main"
                where="SERVICE_USER_ID=$ServiceUserId"
                filter_list="monthrangefilter_dt"            
                row_comment="0"
                base="0" baseid="0" action_name="commonReport.do"
                param_list="selectedId"
                param_check_list="ServiceUserId" >
    
        <column name="DUMMY" title="/"  width="5"  count="0" grouptotalall="0" hide="0" type="T" selected="1"
             hide_allow="1" total_allow="0" group_allow="1" grouptotal_allow="0" count_allow="0"  skip_for_sort="1">
             <edit_link> <![CDATA[ <input type="checkbox" name="selectedId" value="$(HSS_PK)"> ]]>  </edit_link>
            </column>
    
          <report-properties>
                <property name="DUMMY" value="selectedId"/>
          </report-properties>
    
    <buttonlist>
    <button buttontype="normal" name="submitAction" value="myFun" 
             className=""  method="" id="myFun" style="font: bold 10px Arial"
             onclick="javascript:myFun()"/>
    </buttonlist>   
    
    <javascriptcode>
     <![CDATA[
        <script type="text/javascript">
        function myFun() {
            alert("XXXXXXXXXXXXX");
            String[] selectedids = document.getElementById("selectedId");
            alert("*******"+selectedids[0]+"*******");
        }
        </script>
    ]]>
    
    </javascriptcode>
    
            <column name="HSS_PK" title="SMS Id"
                    width="15"
                    count="0" grouptotalall="0"
                    hide="0" type="N" selected="1"
                    hide_allow="1" total_allow="0"
                    group_allow="1" grouptotal_allow="0"
                    count_allow="0" />
    
        <column name="DELIVERY_TIME" title="Delivery time"
                    width="8"
                    count="0" grouptotalall="0"
                    hide="0" type="D" selected="1"
                    hide_allow="1" total_allow="0"
                    group_allow="1" grouptotal_allow="0"
                    count_allow="0" decorator="SimpleDateTimeDecorator" />
    
        <column name="DELIVERY_STATUS" title="Delivery status"
                    width="8"
                    count="0" grouptotalall="0"
                    hide="0" type="T" selected="1"
                    hide_allow="1" total_allow="0"
                    group_allow="1" grouptotal_allow="0"
                    count_allow="0" />
    
              <orderby columnlist="HSS_PK DESC" />
            <groupby columnlist="" />
            <sumquery columnlist="" />
        </report>
    

    整个内容在xml文件中,实际上在文件内部就像这样

3 个答案:

答案 0 :(得分:0)

首先,您必须为按钮编写正确的html

 <button buttontype="normal" name="submitAction" className="" method="" id="myFun" onclick="javascript:myFun1()">my fun</button> 

然后将你的函数名从myFun()编辑到myFun1(),因为myFun是你按钮的id,所以它给出了错误。

  <script type="text/javascript">
  function myFun1(){
    alert("XXXXXXXXX");
  }
 </script>

通过更改功能名称,它将正常工作。您正在使用与函数的按钮ID相同的名称,这就是它给出错误的原因。如果有效,你可以接受答案。

答案 1 :(得分:0)

问题出在您的Javascript中,您尝试定义String[]类型的对象,该对象不是有效的Javascript类型。 Javascript不是Java。

function myFun() {
    alert("XXXXXXXXXXXXX");
    String[] selectedids = document.getElementById("selectedId");
    alert("*******"+selectedids[0]+"*******");
}
</script>

此外,getElementById函数不会返回数组,因此您无法在其返回值上使用索引[0]

解决方案:将String[]替换为var,将selectedids[0]替换为selectedids

function myFun() {
    alert("XXXXXXXXXXXXX");
    var selectedids = document.getElementById("selectedId");
    alert("*******"+selectedids+"*******");
}
</script>

我不确定这是否符合您的要求:它使用文字ID&#34; selectedId&#34;检索元素。您是否尝试检索用户点击的内容?

答案 2 :(得分:-1)

我不确定你的意思是“从javascript修改为html”,但我可以尝试帮助你打印警报信息。 <button>不是自闭标签。它看起来应该更像

<button buttontype="normal" name="submitAction" className=""  
    method="" id="myFun" onclick="javascript:myFun()">myFun</button>

此外,请确保在任何代码将其绑定到事件之前声明您的javascript函数。通常它放在html <head>标记中以完成此操作。

接下来,CDATA应直接放在<script

之后
<script type="text/javascript">
<![CDATA[
  function myFun(){
      alert("XXXXXXXXXXXX");
  }
]]>
</script>

以便验证器不会将<script中的内容解析为xhtml。

http://jsfiddle.net/sKYQ6/