javascript - 如何在括号表达式中插入数组下标?

标签 javascript common-lisp parenscript

我有这段代码在 JavaScript 中运行:

(document.querySelectorAll('[rel="next"]'))[0].click()

我正在尝试在parenscript中写同样的东西(来自 Common Lisp 生态系统的库)。我当前草图中的表达式正在由名为 Nyxt available here 的包下的 REPL 进行评估.

CL-USER> (in-package :nyxt)

Nyxt 被设计为一个可无限扩展的浏览器。因此,用户可以在程序运行时更改代码和/或创建扩展。这是设计上的实时可破解性。

这是代码:

(ps:chain document (query-selector-all "[rel=next]")) (click))

使用 ps:ps 我可以“查看”parenscript 正在构建的内容:

NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") (click)))
"document.querySelectorAll('[rel=next]').click();"

上面的结果已经接近我需要的了。然而,仍然缺少一件事:在 .click() 之前对 parenscript 数组(id.est.,Javascript 中的“[0]”)的订阅。

我有一些失败尝试

  1. 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") [0] (click)))

我得到了一个额外的“.”:

"document.querySelectorAll('[rel=next]').[0].click();"
  • 如果我尝试:
  • NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") ([0]) (click)))
    

    我得到了一个额外的“。”和不必要的“()”:

    "document.querySelectorAll('[rel=next]').[0]().click();"
    
  • 如果我尝试:
  • NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]")[0] (click)))
    

    我得到了一个额外的“.”:

    "document.querySelectorAll('[rel=next]').[0].click();"
    
  • 如果我尝试:
  • NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]" [0]) (click)))
    

    我得到一个额外的[0]作为另一个参数:

    "document.querySelectorAll('[rel=next]', [0]).click();"
    

    如何插入它?

    最佳答案

    偶然间,我发现了答案,诀窍就是只传递0而不使用[]:

    
    NYXT> (ps:ps (ps:chain document  (query-selector-all "[rel=next]") 0 (click)))
    
    "document.querySelectorAll('[rel=next]')[0].click();"
    

    我认为 parenscript 可以有更多教程和文档。我一直在挣扎。因此,我将其留在这里是为了帮助像我这样的其他 Common Lisp 新手:)

    关于javascript - 如何在括号表达式中插入数组下标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68170093/

    相关文章:

    javascript - FullCalendar RenderEvent 在版本 3.9.0 中不起作用

    javascript - Webpack 和 React getComponent() 未异步加载组件

    common-lisp - 如何在 Common Lisp 中要求关键字参数?

    package - 在包中覆盖 "defun"

    common-lisp - 有没有办法在 parenscript 代码中插入原始 javascript?

    javascript - 内联导入导出组件在热重载时抛出错误

    javascript - 为什么 Express 模块没有安装在其默认目录中,例如 npm\node_modules?

    lisp - 基本 LISP 问题

    clojure - Lisp 方言以及与 Java/C# 的比较

    lisp - 使用 parenscript 设置间隔函数