【问题标题】:SyntaxError: missing formal parameterSyntaxError:缺少形式参数
【发布时间】:2017-04-22 14:45:03
【问题描述】:

我的代码有一些错误。也许有人可以帮助我。我收到此错误:

SyntaxError: missing formal parameter
function col(10,10){

这是我的代码:

<script type="text/javascript">
   function col(<?=$result['seats_count']?>,<?=$result['booked']?>){
       if((<?=$result['seats_count']?>><?=$result['booked']?>))$('.table.table-bordered.booking tbody tr').css("background-color","#f55");
   };
</script>

【问题讨论】:

  • 在函数的声明中,参数必须是标识符,而不是数字或任何类型的值。
  • 您应该将其发布为答案,@Pointy。
  • 数字不是有效的标识符名称。简单示例:var 10 = 'foo'; 引发语法错误。也许只是删除整个function col(&lt;?=$result['seats_count']?&gt;,&lt;?=$result['booked']?&gt;){ ... }; 部分,只保留正文(即if 语句)。
  • 不知道为什么这被赞成。数字作为变量是众所周知的 javascript 非法行为。
  • @Felix kling,我尝试了你的建议,它有效!!!非常感谢 :) 大多数时候我喜欢把代码过于复杂化,然后我就迷路了。再次感谢您!

标签: javascript html


【解决方案1】:

FormalParameterListIndentifier tokens 的逗号分隔列表。

标识符只能以 IdentifierStart 开头:

标识符开始 ::

  • Unicode 字母

  • $

  • _

  • \ UnicodeEscapeSequence

标识符不能以数字开头,因此10 不是有效的形式参数。在创建 col 函数代码时,您的 PHP 代码必须生成形式参数名称,每个名称都以一个字母(或其他有效的开头字符之一,如上所述)开头。

【讨论】:

    【解决方案2】:

    定义一个函数并调用它是两个独立的行为:

    // 1. Define a function
    function col(seatsCount, booked) {
        if(seatsCount /*some operator*/ booked) {
             $('.table.table-bordered.booking tbody tr').css("background-color","#f55");
        }
    }
    // 2. Call the function
    col(<?=$result['seats_count']?>, <?=$result['booked']?>);
    

    【讨论】:

    • 虽然它解决了问题,但我认为你应该做的不仅仅是发布代码,至少应该遵循你正在做的事情。当然这是基本的,但显然 OP 缺少基本背景。
    【解决方案3】:

    对我来说,这意味着我将参数命名为关键字(在本例中为“default”),所以当我将其重命名为“default2”时,问题就消失了……

    【讨论】:

      【解决方案4】:

      你不能将数字作为函数参数传递,但是你可以创建一个自调用函数来做你想做的事情。

      (function col(a, b) {
          if(a && b)
          {
              $('.table.table-bordered.booking tbody tr').css("background-color","#f55");
          }
      })(<?=$result['seats_count']?>, <?=$result['booked']?>);
      

      DEMO

      【讨论】:

      • 或者你可以写console.log(1, 2)
      • 我以前也是这样:
      • 然后函数,但我得到一个不同的错误,我的函数没有定义。函数 col(seatsCount,booked){ if(seatsCount >=booked){ $('.table.table-bordered.booking tbody tr').css("background-color","#f55"); } }
      • 我在第一个代码(值)中得到了我需要的东西,但我不明白为什么会出现错误 - 函数是点定义的???
      【解决方案5】:

      在 PHP 之后,这个:

      <script type="text/javascript">
         function col(<?=$result['seats_count']?>,<?=$result['booked']?>){
             if((<?=$result['seats_count']?>,<?=$result['booked']?>))$('.table.table-bordered.booking tbody tr').css("background-color","#f55");
         };
      
      </script>
      

      看起来像这样:

      <script type="text/javascript">
          function col(10,10){
             if((10,10))$('.table.table-bordered.booking tbody tr').css("background-color","#f55");
         };
      
      </script>
      

      目前还不清楚您要做什么。看起来您正在使用 PHP 来测试这些值,然后在它们相等时设置一个 CSS 属性?如果是这样,你就不需要函数了,你可以有条件地只在有意义的时候添加 javascript:

      <?php
          if($result['seats_count']==$results['booked'] {
              $('.table.table-bordered.booking tbody tr').css("background-color","#f55");
          }
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-05
        • 2015-07-25
        • 1970-01-01
        相关资源
        最近更新 更多