㈠ js动态绑定onclick事件,事件点击多时无响应
onclick事件绑定只对dom中存在的元素有效,对于后来新增加的元素是监测不到,所以绑定事件失败.
㈡ js为什么点击事件无效
事件里你先console.log('this.style.backgroundColor')打印下是什么,在确定判断条件对不对
㈢ js点击事件不完全生效
不生效可能是你没有阻止事件冒泡。
当点击取消按钮的时候,会触发点击id为name的元素,所以重新加上了带有show的类名。
应该在取消的按钮点击事件参数加上e,函数内加上“e.stopPropagation()”阻止事件冒泡。
㈣ javascript 为什么按钮的onclick事件不触发 按了没反应
主要是你写的位置是script里边还是行内还是body,herd和body加script标签,有时候浏览器也会出现错误,先版刷新一下如果还权不行就重新打开!如果单纯的练习的话可以一个个试试获取input标签name和ID正常来说你这只要有script标签语法是不会报错,另外不知道为什么你的单标记标签会多出来一个/出来,可以去掉试试!
㈤ 移动端JS父层Touch事件用了冒泡,子层onclick事件不生效
移动端JS父层Touch事件用了冒泡,子层onclick事件不生效,这时候子元素就要用委托来绑定事件啊,不能直接在子元素上onclick,如$("#mydiv").on("touchend", "img", func(this))。
可以参照这篇文章(我找的别人的)http://blog.csdn.net/cysear/article/details/72302977
㈥ 我自己写的JS函数:为什么无法响应点击事件呢
onload = *而不是()=*
在有些浏览器,脚本是和正文分开加载的,你这个document.getElementsByTagName("input");返回有可能没有值,
首先写一个简单的ready函数
//只接受函数作为参数,每调用一次,存一个函数,当页面载完,一次自动执行
//ready(yourfunction)
varready=(function(){
varisReady=false,
funList=[];
functionr(fn){
typeoffn!=="function"||(isReady?fn():funList.push(fn))
}
functionreadyCall(){
isReady=true;
while(funList.length){
funList.shift()()
}
}
if(document.addEventListener){
document.addEventListener("DOMContentLoaded",function(){
document.removeEventListener("DOMContentLoaded",arguments.callee,false);
readyCall()
},false)
}elseif(document.attachEvent){
document.attachEvent("onreadystatechange",function(){
if(document.readyState==="complete"){
document.detachEvent("onreadystatechange",arguments.callee);
readyCall()
}
})
}
returnr
}
())
再写一个绑定事件的函数
/**
*bind(target,eventname,eventfunction)
*bind(控件,事件名称(如"click"不带on),事件函数)
*注意,事件函数,就算在ie,也会强推一个event作为第一个参数
*为了兼容旧版本浏览器,preventDefaultpreventDefault简单的写了些,不够完
*还望海涵
*/
varbind=function(el,name,fn){
if(el.addEventListener){
el.addEventListener(name,fn);
}else{
name="on"+name;
if(el.attachEvent){
el.attachEvent(name,function(){
varargs=Array.prototype.slice.call(arguments),ret=true;
if(window.event){
args.unshift(window.event);
if(!event.preventDefault)
event.preventDefault=function(){
ret=false;
};
if(!event.stopPropagation)
event.stopPropagation=function(){
event.cancelBubble=true;
};
}
fn.apply(this,args);
returnret;
});
}else{
varold=el[name],noFunc=typeofold!=="function",noList=noFunc||!old.list,call;
if(noList){
call=el[name]=function(event){
varlist=call.list,l=list.length,
args=Array.prototype.slice.call(arguments),ie=!!window.event,
ret=true,run=true;
if(!event.preventDefault)
event.preventDefault=function(){
ret=false;
};
if(!event.stopPropagation)
event.stopPropagation=function(){
run=false;
};
if(ie)args.unshift(event);
while(l--&&run)
list[i].apply(this,args);
returnret;
};
call.list=[];
if(!noFunc)call.list.push(old);
}
call.list.push(fn);
}
}
};
时间关系,没写解绑函数
再来一个寻找控件的函数
/**
*trans("#id")trans(".class")trans("$name")trans("tagName")
*/
functiontrans(el){
varc;
c=el.charAt(0);
c=c.match(/^[#.$]/)?c:"";
returntypeofel==="object"&&
Object.prototype.toString.call(el).match(/[objectHTML.*Element]/)?el
:typeofel==="string"&&
(el=(document[
["getElementById","getElementsByClassName","getElementsByName","getElementsByTagName"]
[{"#":0,".":1,"$":2,"":3}[c]]])(el.substring(c?1:0)),c?[el]:el.length)?el:null;
}
然后再轻松的绑定事件
ready(function(){
varfruit=trans("input");
//初始化
for(vari=0;i<fruit.length-4;i=i+2)
fruit[i+1].disabled="disabled";
//添加事件
for(vari=0;i<fruit.length-4;i=i+2)
bind(fruit[i],"click",(function(fruit,value){
returnfunction(event){
if(fruit.id===value)fruit.removeAttribute("disabled");
};
}(fruit[i],fruit[i].value)));//注意,这里直接把fruit[i].value,和fruit[i]传给事件闭包,就不容易和其他变量混淆了。
});