JS闭包问题,循环添加事件,只有最后一个
百度了一下午实在是解决不了了。。求大神!JS实现把DIV中字体展开收起的效果,循环给RIGHT_DIV进行修改,先判断长度进行截取,这块没问题,之后给该DIV增加点击事件...
百度了一下午 实在是解决不了了。。求大神!
JS实现把DIV中字体展开 收起的效果,循环给RIGHT_DIV进行修改,先判断长度进行截取,这块没问题,之后给该DIV增加点击事件,总是最后一个成功 其他不行。
代码如下,
//判断截取
var o = document.getElementsByName("right_div");
for ( var i = 0; i <= o.length; i++) {
var s = o[i].innerHTML;
var p = document.createElement("span");
var n = document.createElement("a");
if (s.length > 30) {
p.innerHTML = s.substring(0, 30);
n.innerHTML = "...展开";
o[i].appendChild(p);
o[i].appendChild(n);
} else {
p.innerHTML = s;
n.innerHTML = "";
o[i].appendChild(p);
o[i].appendChild(n);
}
//添加事件
this.onclick = function() {
if (n.innerHTML == "...展开") {
n.innerHTML = "收起";
p.innerHTML = s;
} else if(n.innerHTML == "收起"){
n.innerHTML = "...展开";
p.innerHTML = s.substring(0, 30);
}
}
} 展开
JS实现把DIV中字体展开 收起的效果,循环给RIGHT_DIV进行修改,先判断长度进行截取,这块没问题,之后给该DIV增加点击事件,总是最后一个成功 其他不行。
代码如下,
//判断截取
var o = document.getElementsByName("right_div");
for ( var i = 0; i <= o.length; i++) {
var s = o[i].innerHTML;
var p = document.createElement("span");
var n = document.createElement("a");
if (s.length > 30) {
p.innerHTML = s.substring(0, 30);
n.innerHTML = "...展开";
o[i].appendChild(p);
o[i].appendChild(n);
} else {
p.innerHTML = s;
n.innerHTML = "";
o[i].appendChild(p);
o[i].appendChild(n);
}
//添加事件
this.onclick = function() {
if (n.innerHTML == "...展开") {
n.innerHTML = "收起";
p.innerHTML = s;
} else if(n.innerHTML == "收起"){
n.innerHTML = "...展开";
p.innerHTML = s.substring(0, 30);
}
}
} 展开
展开全部
o[i].onclick = (function(n1,p1,s1){
if (n1.innerHTML == "...展开") {
n1.innerHTML = "收起";
p1.innerHTML = s;
} else if(n1.innerHTML == "收起"){
n1.innerHTML = "...展开";
p1.innerHTML = s1.substring(0, 30);
}
})(n,p,s)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询