简单的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')
(当你叫它时)
正确的做法是使用'"
或''
(如果您在字符串中使用类似"的引号)在回显字符串中的标记属性内生成引号(取决于您是否使用"
或'
执行该属性)。
相关文章:
- Backbone fetch中的Ajax在fetch调用退出后完成,因此fetch调用中没有成功/失败事件
- CRM 2011对getAttribute的调用失败
- 当我的单元测试失败时,回调被调用了两次
- $.ajax调用失败,dataType为json
- 当数据大小超过1119字节时,jqueryajax调用失败
- Ajax调用PHP失败,ASP正常工作.NET
- Web API 调用在设备模式下失败
- onError 在 onLoad 中加载图片失败时不调用
- 来自 Object 内部的 Jquery Ajax 调用立即失败
- 使用空媒体查询调用matchMedia失败,IE中的参数无效
- *简单*解析云代码查询失败”;TypeError:无法调用方法'获取'未定义的“检索该信息”;
- Jsonresult在我的Ajax调用中使用参数失败.为什么会发生这种事
- PageMethods调用使用1参数成功,但在2上失败(未知web方法)
- 我用脚本创建了一个按钮.我可以通过点击按钮调用其他函数吗?我这样做,但失败了
- 对API的Spring RestTemplate调用有效,但由于相同的原始策略,jQuery失败
- ajax成功时调用self-object失败
- 如何删除失败Gulp任务的调用堆栈
- ExtJs 动态存储失败调用句柄
- 为什么Ember会抛出“;未捕获错误:断言失败:调用已销毁对象上的集“”;载于ember.js:3722
- 从同一个onclick失败调用两个函数