我有一个功能,它成功返回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);
}
答案 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);