【问题标题】:Uncaught SyntaxError: Unexpected token ]Uncaught SyntaxError: Unexpected token ]
【发布时间】:2014-07-08 21:59:18
【问题描述】:

我知道这个话题已经被问过好几次了,因为我尝试了很多次来解决,但问题仍然存在。

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. 我仍然无法打印警报消息。

更新

<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 文件中的内容,实际上在文件中是这样的

【问题讨论】:

  • 我认为您缺少一些相关代码。你能为我们创建一个 jsfiddle 吗?
  • 鉴于您的代码中根本没有],我们无法准确诊断问题。
  • 问题出在 xml 文件中。我需要在哪里添加这些功能。最初我收到错误,现在我从 javascript 修改为 html 后没有收到错误消息,但仍在努力打印警报消息
  • 非常小的评论:你不需要javascript:在事件处理程序的开头......你唯一需要它们是&lt;a href="javascript:dothis();"&gt;与URL区分开来
  • 我已经用原始 xml 部分更新了这个。

标签: javascript html xml button xhtml


【解决方案1】:

问题出在您的 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“selectedId”的元素。您是否正在尝试检索用户点击的内容?

【讨论】:

    【解决方案2】:

    首先你必须为你的按钮编写正确的 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 相同,这就是它给出错误的原因。如果有效,您可以接受答案。

    【讨论】:

      【解决方案3】:

      我不确定您的意思是“从 javascript 修改为 html”,但我可以尝试帮助您打印警报消息。 &lt;button&gt; 不是自闭合标签。它应该看起来更像

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

      此外,请确保在任何代码将其绑定到事件之前声明您的 javascript 函数。通常它被放置在html的&lt;head&gt;标签中来完成这个。

      接下来,CDATA应该直接放在&lt;script之后

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

      这样&lt;script 中的内容就不会被验证器解析为 xhtml。

      http://jsfiddle.net/sKYQ6/

      【讨论】:

      • 损坏的 HTML 元素不会导致控制台错误。这是正确的,但它与错误消息无关。 PS,javascript在&lt;body&gt;标签的底部运行得更好,而不是在头部。
      • 放错 javascript 函数声明可能会导致它无法工作。这就是我希望提供的帮助。
      • @Shredder 会产生类似于“未定义不是函数”的错误
      • @RUJordan 所以原来的错误消失了,但仍然没有收到 alert() 消息。没有给出新的错误。
      • buttontype 不是有效属性,是吗? className 不需要 camelCase,也不确定为什么方法会卡在按钮元素上。哦,应始终避免使用内联 js:/ 或至少在某处的评论中提倡反对。另外,为什么一味地建议OP将代码贴在头上?如果您要发布答案,您不应该同时解决代码的其他问题吗?
      猜你喜欢
      • 2012-05-17
      • 2019-02-10
      • 2011-03-09
      • 2014-01-06
      • 2012-04-10
      • 1970-01-01
      相关资源
      最近更新 更多