簡體   English   中英

插入帶有來自另一個鏈接的文本的鏈接

[英]Insert link with text from another link greasemonkey

我想要做的是為我使用的該論壇的每個線程插入一個鏈接和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]訪問標簽並使用href創建我自己的鏈接?

我本以為可以使用XPATH編寫此代碼,但我不太了解。 在這種情況下,這是個好主意嗎?

很抱歉這個長期的問題。

首先,在上面的代碼示例中,您意識到您正在創建一個鏈接( 一個標簽),然后通過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...
}

希望這可以幫助。

實際上,我想我已經解決了..(謝謝邁克爾,感謝您的輸入,我已修復了此代碼)

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);
}

有人看到這有什么問題嗎?

根據您自己的響應,您應該真正自己處理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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM