所以这是我的问题我有一些复选框,我想在选中或取消选中时触发一些行为。所以我在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中的数字文字后面开始。
答案 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属性中生成引号(具体取决于是否您在回显字符串中使用"
或'
执行该属性。