学习香草JavaScript,用于循环
我试图学习香草JavaScript或纯JS,不管你怎么看。我开始学习jQuery,现在我正在尝试在没有框架的情况下提高速度。我通常只用jQuery就可以做到这一点,但我很难用纯JS做到这一点学习香草JavaScript,用于循环,javascript,for-loop,innerhtml,createelement,Javascript,For Loop,Innerhtml,Createelement,我试图学习香草JavaScript或纯JS,不管你怎么看。我开始学习jQuery,现在我正在尝试在没有框架的情况下提高速度。我通常只用jQuery就可以做到这一点,但我很难用纯JS做到这一点 var a = $('.entry-content'),i; for (i=0;i<a.length; i++) { var b = a[i].innerHTML; var c = document.createElement('div'); var d = c.id = 'rep
var a = $('.entry-content'),i;
for (i=0;i<a.length; i++) {
var b = a[i].innerHTML;
var c = document.createElement('div');
var d = c.id = 'reply_bb';
var e = d.innerHTML = 'Reply';
a[i].innerHTML = a[i].appendChild(c);
}
var a=$('.entry content'),i;
对于(i=0;i而言,此处开始出错:
var d = c.id = 'reply_bb';
var e = d.innerHTML = 'Reply';
d
此时是字符串'reply\u bb'
因此d
没有属性。innerHTML
那么,我不知道你想用这个做什么:
a[i].innerHTML = a[i].appendChild(c);
您可以设置innerHTML
或追加子元素。尝试将innerHTML
设置为追加子元素(即追加的DOM元素)的结果是没有意义的
在我看来,也许你想要的是:
var items = $('.entry-content'), replyDiv;
for (var i = 0; i < items.length; i++) {
replyDiv = document.createElement('div');
replyDiv.className = 'replyButton';
replyDiv.innerHTML = 'Reply';
items[i].appendChild(replyDiv);
}
这两种方法都适用于安装事件处理程序时存在的项目。我在这里使用。单击()
,只是因为它更简洁
但是,如果要在其上安装事件处理程序的项目尚不存在或将来将创建,则必须使用委派事件处理程序,即在已存在的父级上安装事件处理程序,而不能使用。单击()
,因此将使用.on()
,如下所示:
$(static parent selector).on('click', '.replyButton', function() {
// event handler code here
})'
其他一些建议:
使用有意义的变量名,如replyDiv
和项
,而不是a
,b
,c
和d
不需要时不要创建中间变量
id值必须是唯一的,所以要么生成唯一的id名称,要么使用类名(我的代码切换为类名)
阅读appendChild所做的。添加了关于问题另一部分的信息:.on()
vs.。单击()
。非常感谢您对自己的解释,并且能够非常友好和理解!我实际上理解了这一切,很抱歉变量是b c d,我这样做是为了开始,然后命名它们。我不知道这只是一个习惯:)您肯定收到了投票并为您检查@我问了另一个问题。如果你能看一看,这可能是另一个简单的答案;)
var items = $('.entry-content'), replyDiv;
for (var i = 0; i < items.length; i++) {
replyDiv = document.createElement('div');
replyDiv.className = 'replyButton';
replyDiv.innerHTML = 'Reply';
items[i].appendChild(replyDiv);
}
var items = document.getElementsByClassName('entry-content'), replyDiv;
for (var i = 0; i < items.length; i++) {
replyDiv = document.createElement('div');
replyDiv.className = 'replyButton';
replyDiv.innerHTML = 'Reply';
items[i].appendChild(replyDiv);
}
$(item selector).click(fn)
$(item selector).on('click', fn)
$(static parent selector).on('click', '.replyButton', function() {
// event handler code here
})'