我想要做的是为我使用的论坛的每个帖子插入一个链接和img。链接的href应该基于元素子元素的href。 这是HTML的部分视图,为了清楚起见,我已经拿出一些东西,如果我花了太多的话,请告诉我。最后一个标签重复20次左右,具体取决于首选项中可见的线程数
<div id="content">
<form id="page_form">
<div id="forums">
<table class="grid forumtable">
<tr></tr>
<tr></tr>
<tr>
<td></td>
<td></td>
<td></td>
<td>
<div class="lastposter">
<a></a>
<a href="view/1234/?page=last#845612"><img></img></a>
</div>
</td>
</tr>
<tr> ...same as above.. x20 </tr>
</table>
</div>
</form>
</div>
所以这是我到目前为止的代码,它通过插入静态链接来工作。我想要的是在前一个链接的#之后使用值的链接。
var lastpst = document.getElementsByClassName('lastposter');
for (var i=0; i < lastpst.length; i++){
links = document.createElement('a');
links.setAttribute('href','we.html');
links.innerHTML ='<a href="we.html"><img src="/static/img/silk/zoom.png" /></a>';
lastpst[i].appendChild(links);
}
那么如何从lastpst [i]访问a标签并使用href创建自己的链接?
我原以为可以用XPATH写这个,但是我无法理解它。在这种情况下,这是一个好主意吗?
抱歉这个冗长的问题。
答案 0 :(得分:1)
首先,在上面的代码示例中,您意识到您正在创建一个链接( A 标记),然后通过 innerHTML 在其中嵌套第二个链接?你可能不想这样做......
如果我理解正确的问题,我会这样做:
var lastpst = document.getElementsByClassName('lastposter');
for (var i=0; i < lastpst.length; i++){
var secondLink = lastpst[i].getElementsByTagName('a')[1];
var secondLink = secondLink.href;
// whatever you need your own code to do...
}
希望这有帮助。
答案 1 :(得分:1)
其实我觉得我解决了..(感谢michael,我已经修改了这段代码,感谢你的输入)
var lastpst = document.getElementsByClassName('lastposter');
for (var i=0; i < lastpst.length; i++){
l = lastpst[i].getElementsByTagName('a')[1];
ln = l.getAttribute('href');
ln = ln.replace(/(?:.*?)#([0-9]{6})/,'/post/view/$1');
links = document.createElement('a');
links.setAttribute('href',ln);
links.innerHTML ='<img src="/static/img/silk/zoom.png" />';
lastpst[i].appendChild(links);
}
有人认为这有什么问题吗?
答案 2 :(得分:1)
继续自己的回复,您应该自己处理DOM操作,而不是将其插入另一个标记内。另外,将A标签放在A标签中可能是一个坏主意。
var lastpst = document.getElementsByClassName('lastposter');
for (var i=0; i < lastpst.length; i++){
l = lastpst[i].getElementsByTagName('a');
ln = l[1].getAttribute('href');
ln = ln.replace(/(?:.*?)#([0-9]{6})/,'/post/view/$1');
links = document.createElement('a');
links.href = ln;
img = document.createElement('img');
img.src = "/static/img/silk/zoom.png"
links.appendChild(img);
lastpst[i].appendChild(links);
}