【问题标题】:Why is the trim() method not working but instead breaking my function?为什么 trim() 方法不起作用而是破坏了我的功能?
【发布时间】:2020-04-06 21:35:19
【问题描述】:

我不明白为什么 trim() 方法在这里对我不起作用:

function addLink() {
    var body_element = document.getElementsByTagName('body')[0];
    var selection;
    selection = window.getSelection();
    selection = selection.trim(); // *** HERE IT IS! ***
    var pagelink = "<br /><br /> Read more at: <a href='"+document.location.href+"'>"+document.location.href+"</a><br />Copyright &copy; Name";
    var copytext = "&ldquo;" + selection + "&rdquo;" + pagelink;
    var newdiv = document.createElement('div');
    newdiv.style.position='absolute';
    newdiv.style.left='-99999px';
    body_element.appendChild(newdiv);
    newdiv.innerHTML = copytext;
    selection.selectAllChildren(newdiv);
    window.setTimeout(function() {
        body_element.removeChild(newdiv);
    },0);
}
document.oncopy = addLink;

这不仅是它没有做它应该做的事情,而且我在这里使用该方法似乎有一个错误,因为它破坏了功能。

我从网上得到了这个复制归属的 javascript 函数。它本身工作得很好,但是我需要在复制选择的开头和结尾添加双引号,所以我需要添加一个trim() 方法以避免复制句子,例如:

“你好,我开头有空!”

我尝试将trim() 方法放在任何地方,但无论我做什么,它都会完全破坏该功能。我已经阅读并重新阅读了该方法的解释,但我看不出我做错了什么......我的意思是,它应该非常简单:你抓住一个字符串,将trim() 方法添加到它,然后'将创建一个没有任何前导或尾随空格的 new 字符串...但似乎我必须在这里遗漏一些东西,因为它只是破坏了函数... Javascript 和我永远无法成为老实说,好朋友;我一直觉得它令人沮丧,而且相当令人费解,因为它是对 PHP 的一种姿势,它不介意以一种或另一种方式放置! (当然,我是在谈论它在我的大脑中的感觉!我相信你们这里的所有专业人士都已经完全明白了,并且知道事情的去向和原因——以及为什么它们不能按照我使用的方式工作他们!)

无论如何,我也尝试过使用strip() 方法(虽然我不明白有什么区别),结果是一样的:它破坏了功能。

提前感谢您对此的任何意见!

【问题讨论】:

标签: javascript string trim strip


【解决方案1】:

window.getSelection() 不返回字符串,它返回 Selection 对象。您需要将其转换为字符串才能对其调用字符串方法。

selection = selection.toString().trim();

【讨论】:

  • 感谢您的回复!正如我所说:对于您的专业人士来说,这将是小菜一碟!很明显,现在你已经指出了那个细节......谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多