Ich möchte einen JS-Code, der eine Reihe von Listenelementen durchläuft und für jedes Listenelement einen eindeutigen Attributwert (in diesem Fall die href) speichert und ihn dann in ein anderes innerhalb desselben Listenelements einfügt. Innerhalb eines Elements (in in diesem Fall die Schaltfläche). Mein aktueller JS-Code funktioniert nur für das erste Listenelement, nicht für die gesamte Serie. Kann mein Ansatz optimiert werden oder muss er geändert werden?
<li class="productgrid--item"> <a class="productitem--image-link" href="www.link_one.com">link one</a> <button class="atc-button--text">button one</button> </li> <li class="productgrid--item"> <a class="productitem--image-link" href="www.link_two.com">link two</a> <button class="atc-button--text">button two</button> </li> <li class="productgrid--item"> <a class="productitem--image-link" href="www.link_three.com">link three</a> <button class="atc-button--text">button three</button> </li>
document.querySelectorAll('.productgrid--item').forEach(function(node) { var anchorHref = document.querySelector('.productitem--image-link').getAttribute('href'); var addToCart = document.querySelector('.atc-button--text'); addToCart.setAttribute('data', anchorHref); });
如果您使用foreach节点并从那里获取和设置所需的属性,那么跟随会更容易
在
forEach()
中,你应该使用node.querySelector()
而不是document.querySelector()
。请参见https://jsfiddle.net/qkd37rsu/
document.querySelector()
在整个文档树中选择并返回第一个匹配的元素,而node.querySelector()
仅在node
元素的子树中搜索(并返回第一个匹配的元素)。请注意,node
只是由forEach(function(node){...})
提供的参数。