我想要將網頁內所有的超連結增加GET的變數【get=1】
例如
<a href="https://www.xxx.com/index.php?get=1">
我會加上【?get=1】
但是有些連結本身已經有其他變數
例如
<a href="https://www.xxx.com/index.php?other=1">
我的JAVASCRIPT原本寫法會變成
<a href="https://www.xxx.com/index.php?other=1?get=1">
要如何寫才能針對原本已經有變數的網址改成&get=1
<a href="https://www.xxx.com/index.php?other=1&get=1">
你參考吧~
<script type="text/javascript">
function LinkOn() {
var Str = "get=1";
var A = document.getElementsByTagName("a");
for (var i = 0; i < A.length; i++) {
if (A[i].getAttribute("href").indexOf("?") > 0) {
A[i].href += "&";
} else {
A[i].href += "?";
}
A[i].href += Str;
}
}
</script>
<button onclick="LinkOn()">連結加上參數</button>
<br /><br /><a href="https://www.xxx.com/index.php">測試1</a>
<br /><a href="https://www.xxx.com/index.php?other=1">測試2</a>
感謝前輩使用最基礎的方式教學。
我融合了froce前輩的寫法
<script type="text/javascript">
function LinkOn() {
var A = document.getElementsByTagName("a");
for (var i = 0; i < A.length; i++) {
var testUrl = new URL(A[i].href);
testUrl.searchParams.append("get", "1");
A[i].href = testUrl.toString();
}
}
</script>
<button onclick="LinkOn()">連結加上參數</button>
<br /><br /><a href="https://www.xxx.org/index.php">測試1</a>
<br /><a href="https://www.xxx.org/index.php?other=1">測試2</a>
主要是依據您的寫法,每按一次,連結的網址就會增加相同變數一次變成【?get=1&get=1】,不過不影響功能。
我想要將網頁內所有的超連結增加GET的變數【get=1】
我會加上【?get=1】
改成
加上&get=1
即可
就算前面沒有別的參數https://www.google.com/search?&q=ithelp 也不會錯
用js的URL物件,舊瀏覽器應該不支援:
https://developer.mozilla.org/en-US/docs/Web/API/URL/searchParams
let testUrl = new URL("https://www.xxx.com/index.php")
testUrl.searchParams.append("test", 1)
testUrl.searchParams.append("test2", 2)
console.log(testUrl.toString())
取得所有tag a element,判斷href內容有?就是用&沒有就是?,用RegExp效能可能會好一點,可以試試看