Hav*_*v0k 2 html javascript r shiny
我想根据 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)
Run Code Online (Sandbox Code Playgroud)
正如您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);
}
Run Code Online (Sandbox Code Playgroud)
然后您可以通过以下方式将结果“发送”到 R:
Shiny.onInputChange('h1', sendToR)
Run Code Online (Sandbox Code Playgroud)
并在 R 端接收:
observe({
print(input$h1)
})
Run Code Online (Sandbox Code Playgroud)
可重现的例子:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1206 次 |
| 最近记录: |