我有这段代码在 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]”)的订阅。
我有一些失败尝试。
- 如果我尝试:
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/