从剪贴板删除不需要的标签

时间:2016-06-03 09:26:26

标签: javascript html clipboard

我有一个功能,它成功返回1到100之间的随机数的ul列表,并将数字放在用户的剪贴板上。这仅适用于IE,但这不是问题。 这个问题是剪贴板上的结果文本保留了li标签,如下所示。有没有办法在数据到达剪贴板之前从数据中删除这些标签?

<LI>68</LI>
<LI>97</LI>
<LI>94</LI>
<LI>43</LI>
<LI>45</LI>
<LI>65</LI>

JS代码:

function ReturnRandomNumbers() {    
    var howManyInt = parseInt(document.getElementById("txtMultiples").value);
    var listNumbers = document.getElementById("listNumbers");   
    var i = 0;      

    if (howManyInt < 101 && howManyInt > 0) {
        listNumbers.innerHTML = "";
        while (i < howManyInt) {
            AddItemToList(randomNumber());      
            i++;
        }       

        window.clipboardData.setData("text",listNumbers.innerHTML); 
        alert(listNumbers.innerHTML);
    } else {
        alert("Value must be between 1 and 100");
    }       
}


function AddItemToList(item) {
    var ol = document.getElementById("listNumbers");
    var li = document.createElement("li");
    li.appendChild(document.createTextNode(item));
    ol.appendChild(li);
}

2 个答案:

答案 0 :(得分:1)

将您的ReturnRandomNumbers()功能修改为:

function ReturnRandomNumbers()
{   
    var howManyInt = parseInt(document.getElementById("txtMultiples").value);
    var listNumbers = document.getElementById("listNumbers");   
    var i = 0;
    var strForClipboard = ''; 

if (howManyInt < 101 && howManyInt > 0) {
    listNumbers.innerHTML = "";
    while (i < howManyInt) {
        var randNumb = randomNumber();
        strForClipboard += (strClipboard ? '\n' : '') + randNumb;
        AddItemToList(randNumb);      
        i++;
    }       

    window.clipboardData.setData("text",strForClipboard); 
    alert(strForClipboard);
}
else {
        alert("Value must be between 1 and 100");
}       
}

答案 1 :(得分:1)

var str = "<LI>68</LI>\n<LI>97</LI>\n<LI>94</LI>\n<LI>43</LI>\n<LI>45</LI>\n<LI>65</LI>"

var str = listNumbers.innerHTML;

您想从字符串中删除li标记,您可以进行正则表达式匹配并替换

var stripped =  str.replace(/<\/*LI>/g,'');

哪个会给出

  

“68   97   94   43   45   65"

将其传递到剪贴板window.clipboardData.setData("text",stripped);