gpt4 book ai didi

Javascript:如何有条件地将选择范围扩展一个字符

转载 作者:行者123 更新时间:2023-11-28 08:12:11 25 4
gpt4 key购买 nike

我是一名客观的 C 程序员,在过去两周内需要快速学习 Javascript,以开发我正在制作的新应用程序。有一些事情我一直无法弄清楚,所以我决定在这里询问它们。

这一次,这是我的问题:

如果我选择的是单个单词,如何检查该单词之前的字符是否是双引号(引号),如果是,则扩展选择以包含它们?

其他相关点(由于程序的其余部分):

  • 只有当 focusNode 与anchorNode 相同时才需要发生这种情况
  • 可以向前或向后进行选择
  • 除非有双引号,否则我不希望更改选择
  • 它实际上只需要在选择之前检查双引号,但也许我可以扩展它,在选择之后也以相同的方式检查双引号
  • 不要忽略空格
  • javascript 不是 jquery

这是我尝试过的,这似乎是我应该做的事情,但由于我缺乏 Javascript 经验,它不起作用(并且我为愚蠢的错误和无知的错误使用道歉东西):

    var selection       = window.getSelection();
var focusNode = selection.focusNode;
var focusOffset = selection.focusOffset;
var anchorNode = selection.anchorNode;
var anchorOffset = selection.anchorOffset;

if (anchorNode === focusNode ) {
var quoteRange = document.createRange();
var quoteString = "";

if ((focusOffset > anchorOffset) && anchorOffset > 0){ //selection is forwards
quoteRange.setStart(anchorNode, anchorOffset);
quoteRange.setEnd(anchorNode, anchorOffset - 1);
quoteString = quoteRange.toString();
} else if ((focusOffset < anchorOffset) && focusOffset > 0){ //selection is backwards
quoteRange.setStart(focusNode, focusOffset);
quoteRange.setEnd(focusNode, focusOffset - 1);
quoteString = quoteRange.toString();
}

console.log(quoteString);

if (quoteString === "\"") {
selection.modify("extend", "backward", "character");
}

}

我感觉有些事情对于比我更有经验的人来说应该是显而易见的,那就是我做错了。

在我的版本中,“quoteString”总是以空结束(据我所知)它不应该是空的。

最佳答案

哇哦!我让它工作了。看来问题是我创建的范围是负方向的。当我交换 setEnd 和 setStart 时,一切都按预期进行。 :)

if (anchorNode === focusNode ) {
var quoteRange = document.createRange();
var quoteString = "";
if ((focusOffset > anchorOffset) && anchorOffset > 0){ //selection is forwards
quoteRange.setEnd(anchorNode, anchorOffset);
quoteRange.setStart(anchorNode, anchorOffset - 1);
quoteString = quoteRange.toString();
} else if ((focusOffset < anchorOffset) && focusOffset > 0){ //selection is backwards
quoteRange.setEnd(focusNode, focusOffset);
quoteRange.setStart(focusNode, focusOffset - 1);
quoteString = quoteRange.toString();
}
console.log(quoteString);

if (quoteString === "\"") {
selection.modify("extend", "backward", "character");

关于Javascript:如何有条件地将选择范围扩展一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24058307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com