当用户使用纯 Javascript 按下文本时更改 url link 的一部分
Change part of url link when user press text with pure Javascript
有没有简单的方法来做到这一点(使用纯 javascript)?
如果我有
<span>text1.de</span>
<span>text2.com</span>
<span>text3.pl</span>
.
.
.
<a href="https://xxxxx.com/example/">https://xxxxx.com/example/</a>
<a href="https://xxxxx.com/example2/">https://xxxxx.com/example2/</a>
<a href="https://xxxxx.com/example3/">https://xxxxx.com/example3/</a>
<a href="https://xxxxx.com/example4/">https://xxxxx.com/example4/</a>
.
.
.
我希望当用户按下 text1.de 或 text2.com 时...所有 xxxxx.com link 都被该文本替换。
例如,如果用户按下 text1.de,则所有 link 都是
<a href="https://text1.de/example/">https://text1.de/example/</a>
<a href="https://text1.de/example2/">https://text1.de/example2/</a>
<a href="https://text1.de/example3/">https://text1.de/example3/</a>
<a href="https://text1.de/example4/">https://text1.de/example4/</a>
.
.
.
如果按text3.com所有link都是
<a href="https://text3.com/example/">https://text3.com/example/</a>
<a href="https://text3.com/example2/">https://text3.com/example2/</a>
<a href="https://text3.com/example3/">https://text3.com/example3/</a>
<a href="https://text3.com/example4/">https://text3.com/example4/</a>
.
.
.
我不知道你的情况的所有情况,但至少可以做到这一点。它替换了您在数据集 ('data-to-be-replaced') 中声明的字符串部分,并将它们替换为您在按钮 ('data-replacer') 中声明的字符串:
const replacers = document.querySelectorAll('.replacer');
const replaceUs = document.querySelectorAll('.replaceMe');
const replaceLinks = (evt) => {
const button = evt.currentTarget;
const { replacer } = button.dataset;
replaceUs.forEach((elem) => {
const wholeString = elem.getAttribute('href');
const toBeReplaced = elem.dataset.toBeReplaced;
const stringWithReplacement = wholeString.replace(toBeReplaced, replacer);
elem.dataset.toBeReplaced = replacer;
elem.setAttribute('href', stringWithReplacement);
elem.textContent = stringWithReplacement;
});
}
replacers.forEach((replacer) => replacer.addEventListener('click', replaceLinks));
<button class='replacer' data-replacer='test'>Replace with "test"</button>
<button class='replacer' data-replacer='test2'>Replace with "test2"</button>
<ul>
<li><a class='replaceMe' href="https://xxxxx.com/example/" data-to-be-replaced='xxxxx' >https://xxxxx.com/example/</a></li>
<li><a class='replaceMe' href="https://xxxxx.com/example2/" data-to-be-replaced='xxxxx'>https://xxxxx.com/example2/</a></li>
<li><a class='replaceMe' href="https://xxxxx.com/example3/" data-to-be-replaced='xxxxx'>https://xxxxx.com/example3/</a></li>
<li><a class='replaceMe' href="https://xxxxx.com/example4/" data-to-be-replaced='xxxxx'>https://xxxxx.com/example4/</a></li>
</ul>
有没有简单的方法来做到这一点(使用纯 javascript)?
如果我有
<span>text1.de</span>
<span>text2.com</span>
<span>text3.pl</span>
.
.
.
<a href="https://xxxxx.com/example/">https://xxxxx.com/example/</a>
<a href="https://xxxxx.com/example2/">https://xxxxx.com/example2/</a>
<a href="https://xxxxx.com/example3/">https://xxxxx.com/example3/</a>
<a href="https://xxxxx.com/example4/">https://xxxxx.com/example4/</a>
.
.
.
我希望当用户按下 text1.de 或 text2.com 时...所有 xxxxx.com link 都被该文本替换。 例如,如果用户按下 text1.de,则所有 link 都是
<a href="https://text1.de/example/">https://text1.de/example/</a>
<a href="https://text1.de/example2/">https://text1.de/example2/</a>
<a href="https://text1.de/example3/">https://text1.de/example3/</a>
<a href="https://text1.de/example4/">https://text1.de/example4/</a>
.
.
.
如果按text3.com所有link都是
<a href="https://text3.com/example/">https://text3.com/example/</a>
<a href="https://text3.com/example2/">https://text3.com/example2/</a>
<a href="https://text3.com/example3/">https://text3.com/example3/</a>
<a href="https://text3.com/example4/">https://text3.com/example4/</a>
.
.
.
我不知道你的情况的所有情况,但至少可以做到这一点。它替换了您在数据集 ('data-to-be-replaced') 中声明的字符串部分,并将它们替换为您在按钮 ('data-replacer') 中声明的字符串:
const replacers = document.querySelectorAll('.replacer');
const replaceUs = document.querySelectorAll('.replaceMe');
const replaceLinks = (evt) => {
const button = evt.currentTarget;
const { replacer } = button.dataset;
replaceUs.forEach((elem) => {
const wholeString = elem.getAttribute('href');
const toBeReplaced = elem.dataset.toBeReplaced;
const stringWithReplacement = wholeString.replace(toBeReplaced, replacer);
elem.dataset.toBeReplaced = replacer;
elem.setAttribute('href', stringWithReplacement);
elem.textContent = stringWithReplacement;
});
}
replacers.forEach((replacer) => replacer.addEventListener('click', replaceLinks));
<button class='replacer' data-replacer='test'>Replace with "test"</button>
<button class='replacer' data-replacer='test2'>Replace with "test2"</button>
<ul>
<li><a class='replaceMe' href="https://xxxxx.com/example/" data-to-be-replaced='xxxxx' >https://xxxxx.com/example/</a></li>
<li><a class='replaceMe' href="https://xxxxx.com/example2/" data-to-be-replaced='xxxxx'>https://xxxxx.com/example2/</a></li>
<li><a class='replaceMe' href="https://xxxxx.com/example3/" data-to-be-replaced='xxxxx'>https://xxxxx.com/example3/</a></li>
<li><a class='replaceMe' href="https://xxxxx.com/example4/" data-to-be-replaced='xxxxx'>https://xxxxx.com/example4/</a></li>
</ul>