所以我的问题是,我有一些复选框,我想在选中或未选中它们时触发一些行为。所以我在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')
(当你叫它时)
正确的做法是使用'"
或''
(如果您在字符串中使用类似"的引号)在回显字符串中的标记属性内生成引号(取决于您是否使用"
或'
执行该属性)。