我希望这样做,以便当单击任何带有代码标记的元素时,用户会复制该元素的innerHTML。但问题是,我有6-7个元素和代码标记,我尝试过这样做:
const code1 = document.getElementsByTagName('CODE')[0];
const code2 = document.getElementsByTagName('CODE')[1];
const code3 = document.getElementsByTagName('CODE')[2];
const code4 = document.getElementsByTagName('CODE')[3];
const code5 = document.getElementsByTagName('CODE')[4];
const code6 = document.getElementsByTagName('CODE')[6];
const code7 = document.getElementsByTagName('CODE')[7];
function copytext(text) {
navigator.clipboard
.writeText(text)
.then(() => {
})
.catch(() => {
alert("something went wrong");
});
}
code1.addEventListener('click', function handleClick() {
copytext(hello1);
});
code2.addEventListener('click', function handleClick() {
copytext(hello2);
});
code3.addEventListener('click', function handleClick() {
copytext(hello3);
});
code4.addEventListener('click', function handleClick() {
copytext(hello3);
});
code5.addEventListener('click', function handleClick() {
copytext(hello4);
});
code6.addEventListener('click', function handleClick() {
copytext(hello5);
});
code7.addEventListener('click', function handleClick() {
copytext(hello6);
});
但我觉得这太重复了。是否有一种方法可以选择每个带有代码标记的元素,并复制其innerHTML,而不必为每个元素编写一个函数?
发布于 2022-07-16 07:52:59
访问this元素
for(let element of document.getElementsByTagName('CODE')){
element.addEventListener('click',GetInnerHTML);
}
function GetInnerHTML(){console.log(this.innerHTML);}CODE{display:block}<CODE>A</CODE>
<CODE>B</CODE>
发布于 2022-07-16 07:57:07
返回数组的document.getElementsByTagName(),这样您就可以完成以下操作
let codes = document.getElementsByTagName();
codes.foreach((element)=>{
element.addEventListener('click', () => {copytext(element)})
});https://stackoverflow.com/questions/73002485
复制相似问题