gpt4 book ai didi

javascript - 如何在 R Shiny 中查询元素

转载 作者:行者123 更新时间:2023-11-29 17:36:09 26 4
gpt4 key购买 nike

我想根据 HTML 标签查询我的 Shiny 应用程序中的元素。例如,对于以下应用程序,如何访问所有 h1 元素(包括其标签和 id)?

library(shiny)
ui <- fluidPage(
h1("Get", id = "1"),
h1("this", id = "2"),
h2("But", id = "3"),
h3("not", id = "4"),
h4("that", id = "5")
)

server <- function(input, output) {}

shinyApp(ui = ui, server = server)

最佳答案

当您在问题中标记javascript时,找到基于shinyJS/JS的解决方案。

您可以使用以下代码来标识 h1 元素:

var elements = document.getElementsByTagName('h1');
var sendToR = [];
for (var nr = 0; nr < elements.length; nr++) {
var newElement = {};
newElement['id'] = elements[nr].id;
newElement['text'] = elements[nr].textContent;
sendToR.push(newElement);
}

然后您可以通过以下方式将结果“发送”到 R:

Shiny.onInputChange('h1', sendToR)

并在 R 端接收:

observe({
print(input$h1)
})

可重现的示例:

library(shiny)
library(shinyjs)

ui <- fluidPage(
useShinyjs(),
h1("Get", id = "1"),
h1("this", id = "2"),
h2("But", id = "3"),
h3("not", id = "4"),
h4("that", id = "5")
)

server <- function(input, output) {
observe({
runjs("
var elements = document.getElementsByTagName('h1');
var sendToR = [];
for (var nr = 0; nr < elements.length; nr++) {
var newElement = {};
newElement['id'] = elements[nr].id;
newElement['text'] = elements[nr].textContent;
sendToR.push(newElement);
}
Shiny.onInputChange('h1', sendToR)
")
})

observe({
print(input$h1)
})
}

shinyApp(ui = ui, server = server)

关于javascript - 如何在 R Shiny 中查询元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56458174/

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