如何在变量上使用replace()然后设置为元素值?

时间:2019-04-29 23:21:47

标签: javascript

我正在编写一个脚本,当您按“ CTRL + ALT + V”时,它将在特定网站上找到特定的跨度元素。它从元素的值创建一个字符串,删除该字符串的一部分,然后将该值复制到剪贴板。

我一直在搜索有关如何复制到剪贴板并使用 .replace()剥离字符串的一部分的不同示例。我整理了一个脚本,但无法正常工作。

这是使用正确的组合键时启动的功能:

function getVNR() {
    let list = document.getElementsByClassName("modelnr"); 
    for (i = 0; i < list.length; i++) {
        console.log(list[i]);
    }
    let vrn = list[1];
    return vrn;
}

在每个页面上,只有两个<< strong> span >类别为“ modelnr”,因此我总是得到正确的元素。返回 vrn 后,它将其发送到 copyText 函数:

function copyText(element) {
    var range, selection, worked;

    if (document.body.createTextRange) {
        range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } 
        else if (window.getSelection) {
        selection = window.getSelection();
        range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }

    try {
        document.execCommand('copy');
        alert('text copied');
    }
    catch (err) {
        alert('unable to copy text');
    }
}

例如,这将给我“Vörunúmer:WA SF114-32-P3VU”或“Vörunúmer:CDDE LI ES1 BK” 问题是它不会删除我想从字符串中删除的部分。我试图从这样的字符串中删除:

let vrn = list[1];
vrn = vrn.toString().replace('Vörunúmer: ', '');
return vrn;

并编辑 copyText 函数,如下所示:

function copyText(element) {
    let range, selection, worked;

    let el = document.createElement('vorunumer');
    el.value = element;
    el.setAttribute('readonly', '');
    el.style = {position: 'absolute', left: '-9999px'};
    document.body.appendChild(el);

    if (document.body.createTextRange) {
        range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } 
        else if (window.getSelection) {
        selection = window.getSelection();
        range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }

    try {
        document.execCommand('copy');
        alert('text copied');
    }
    catch (err) {
        alert('unable to copy text');
    }
    document.body.removeChild(el);
}

当我像这样运行脚本时,它不会复制任何内容。我对javascript不太熟悉,因此如果有人可以帮助我解决这个问题并向我解释它的工作原理,我将不胜感激。

0 个答案:

没有答案