简单的javascript调用失败


Simple javascript call is failing

所以我的问题是,我有一些复选框,我想在选中或未选中它们时触发一些行为。所以我在change上放了一个简单的javascript函数。但我运行了一个测试,mozilla和chrome都报告了一个语法错误。在我调用函数的那一行,我找不到错误。这太简单了,让我抓狂,如果你能帮我找到我的错误,我会非常感激的。这是我的代码:

生成复选框HTML行的php函数:

        public function addClassToTable(){
           $res='';
           foreach($tab=classes::findAll() as $c){
              $string=$c->__get('niveau').$c->__get("section").$c->__get("division");
              $id=$c->__get('id').$string;
              $res.='<tr><td>'.$string.'</td><td><input  type="checkbox" id="'.$id.'" onchange="addClasse('.$id.')"></td></tr>';
           }
           return $res;
        }

Js函数addClasse:

    function addClasse(val){

       var inputElements = document.getElementById(val);

       if(inputElements.checked){
        document.getElementById('selectClasse').style.display="block";
       }
       else{
        document.getElementById('selectClasse').style.display="block";
       }
   }

这是Html,我从中得到错误

   <fieldset>
           <legend>Ajouter une Classe</legend>
           <table>
               <tr>
                 <th>Classe</th>
                 <th>Selectionner</th>
               </tr>
               <tr><td>12A</td><td><input  type="checkbox" id="112A" onchange="addClasse(112A)"></td></tr><tr><td>12A</td><td><input  type="checkbox" id="212A" onchange="addClasse(212A)"></td></tr><tr><td>12A</td><td><input  type="checkbox" id="312A" onchange="addClasse(312A)"></td></tr>
           </table>
   </fieldset>

语法错误提到chrome中的参数列表后面缺少),标识符在mozilla firefox中的数字文本后面立即开始。

onChange函数参数中这样包装字符串。

<fieldset>
    <legend>Ajouter une Classe</legend>
    <table>
        <tr>
            <th>Classe</th>
            <th>Selectionner</th>
        </tr>
        <tr>
            <td>12A</td>
            <td><input id="112A" onchange="addClasse('112A')" type=
            "checkbox"></td>
        </tr>
        <tr>
            <td>12A</td>
            <td><input id="212A" onchange="addClasse('212A')" type=
            "checkbox"></td>
        </tr>
        <tr>
            <td>12A</td>
            <td><input id="312A" onchange="addClasse('312A')" type=
            "checkbox"></td>
        </tr>
    </table>
</fieldset>

不需要将id参数传递给addClasse方法。传递this上下文以访问整个元素属性。

请尝试以下代码段。

PHP代码:传递this上下文

$res.='<tr><td>'.$string.'</td><td><input  type="checkbox" id="'.$id.'" onchange="addClasse(this)"></td></tr>';

JS代码

function addClasse(el) {
  document.getElementById('selectClasse').style.display = (el.checked) ? "block" : "none";
}

注意:您没有遗漏任何字符串,您可以使用三元运算符来满足这些条件。

尝试将ID放在javascript函数调用中的引号中,如下所示。

$res.='<tr><td>'.$string.'</td><td><input  type="checkbox" id="'.$id.'" onchange="addClasse('''.$id.''')"></td></tr>';

addClasse(112A)-错误是因为您在"Integer"中使用了字母。你必须用引号把它做成一个"字符串",比如:addClasse('112A')(当你叫它时)

正确的做法是使用'"''(如果您在字符串中使用类似"的引号)在回显字符串中的标记属性内生成引号(取决于您是否使用"'执行该属性)。