js函数调用

varcheckedIds="";//翻页保存选中的id
/**
*记录选择的元素
*@return
*/
functionchangeIds(){
varoneches=document.getElementsByName("ids");
for(vari=0;iif(oneches[i].checked==true){
//避免重复添加(若存在元素时,不添加)
if(!contains(checkedIds,oneches[i].value)){
checkedIds+=oneches[i].value+",";
//console.log(oneches[i].value);
}
}
if(oneches[i].checked==false){
//取消复选框时含有该id时将id从全局变量中去除
if(contains(checkedIds,oneches[i].value)){
checkedIds=checkedIds.replace((oneches[i].value+","),"");
}
}
}
}
/**
*
*@return
*/
functiongetChecked(){
if(checkedIds==""){
return;
}
varoneches=document.getElementsByName("ids");
for(vari=0;i//全局变量中含有id,则该复选框选中
if(contains(checkedIds,oneches[i].value)){
oneches[i].checked="checked";
//console.log(oneches[i].value);
}
}
}
/**
*判断数组是否存在元素
*@paramobj
*@paramele
*@return
*/
functioncontains(obj,ele){
//console.log(obj);
//console.log(ele);
if(obj==""){
return;
}
/*若参数obj为字符串时,需要转换成数组*/
vararr=obj.split(",");
vari=arr.length;
while(i--){
if(arr[i]==ele){
returntrue;
}
}
returnfalse;
}
onclick="changeIds();getChecked();contains('1','2');"
错误信息
UncaughtTypeError:Failedtoexecute'contains'on'Node':parameter1isnotoftype'Node'.
一只名叫tom的猫
浏览 299回答 2
2回答

开满天机

别这么写,这是不推荐的写法,而且容易出现很多问题。在html中写:onclick="handleClick();"在js中写:functionhandleClick(){changeIds();getChecked();contains('1','2');}你写onclick="contains('1','2');"时,这个contains函数的调用环境变成了当前的元素,而元素的类型是HtmlElement也是Node。非常巧合的是,Node上面也有一个函数contains,所以程序以为你调用的是Node上的contains,因此出现了参数类型不匹配的错误。

慕村225694

你这个第二个代码可以完整点看到onclick,我猜你是在html标签式执行方法,如果是这样的话,不建议应该也支持在HTML标签中执行多个事件方法,你可以如楼上的写法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript