使用引号和单引号时使用的第三个字符

Third character to use when quote and single quote are in use

我不知道是否已经有我还没有找到的解决方案,因为我不知道 quotes/singlequotes 的通用术语是什么,但是是否有第三个标志可以使用?

这是我的意思的一个例子:

我有一个 "copy text to clipboard" javascript,我通常在 html 中这样使用:

<a href="javascript:;" onclick="clipboardCopy('TextToCopy')">LinkName</a>

剪贴板复制脚本如下所示:

function clipboardCopy(text) {

    var textArea = document.createElement("textarea");
    textArea.value = text;
    document.body.appendChild(textArea);
    textArea.select();

    document.execCommand('copy');

    document.body.removeChild(textArea);

}

但是如果我想要另一个脚本在按下按钮时将这些链接打印到 div 中:

function CopyHtml() {
    document.getElementById('divname').innerHTML = "Links to print in div.";
}

由于引号和单引号都已被使用,因此将不允许这样做(如果我将双引号更改为单引号,那么我将单引号更改为什么?)。是否有第三个字符可用于此类问题?

您可以随时使用 \"\' 进行转义。

那么如果你可能需要的话,你还有新的 ES6 `

console.log("he\"llo \"world");
console.log('he\'llo \'world');
console.log(`I'm a hello "world"`);

以你的情况为例,你可以简单地做:

document.getElementById('divname').innerHTML = `<a href="javascript:;" onclick="clipboardCopy('TextToCopy')">LinkName</a>`;

为了更简洁、更易于维护的代码,我强烈建议使用 addEventListener 正确附加侦听器,而不是使用与 eval 一样糟糕的内联处理程序。例如,你可以有一个像

这样的辅助函数
function copyOnClick(elm, text) {
  elm.addEventListener('click', () => {
    clipboardCopy(text);
  });
}

然后,而不是

<a href="javascript:;" onclick="clipboardCopy('TextToCopy')">LinkName</a>

你可以 select a 然后调用

copyOnClick(a, 'TextToCopy');

CopyHtml 中将元素附加到 divName 时,您可以做同样的事情。使用 createElement 显式创建元素,然后调用 copyOnClick:

function clipboardCopy(text) {
    var textArea = document.createElement("textarea");
    textArea.value = text;
    document.body.appendChild(textArea);
    textArea.select();
    document.execCommand('copy');
    document.body.removeChild(textArea);
    console.log('copied, check clipboard');
}

function copyOnClick(elm, text) {
  elm.addEventListener('click', () => {
    clipboardCopy(text);
  });
}

function CopyHtml() {
  const parent = document.getElementById('divname');
  [['text1', 'copy1'], ['text2', 'copy2']].forEach(([aText, aCopyText]) => {
    const a = parent.appendChild(document.createElement('a'));
    a.textContent = aText;
    copyOnClick(a, aCopyText);
  });
}

CopyHtml();
<div id="divname"></div>

这样,您不必担心 任何 属性值中的嵌套引号 - 您只需要 select 元素并添加所需的侦听器.