简单的JavaScript调用失败

时间:2015-12-30 19:48:27

标签: javascript php html

所以这是我的问题我有一些复选框,我想在选中或取消选中时触发一些行为。所以我在onchange上放了一个简单的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中的数字文字后面开始。

4 个答案:

答案 0 :(得分:2)

onChange 函数参数中包装你的字符串。

project-xxx

答案 1 :(得分:1)

无需将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";
}
  

注意:您没有错过任何字符串,您可以使用三元运算符来处理这些情况。

答案 2 :(得分:0)

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

?

答案 3 :(得分:0)

addClasse(112A) - 错误是因为您在&#34;整数&#34;中使用了字母。你必须使它成为一个&#34; String&#34;使用引号,如: addClasse('112A')(当你打电话时)

正确使用\"\'(如果您在字符串中使用&#34;等引号)在tag属性中生成引号(具体取决于是否您在回显字符串中使用"'执行该属性。