Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在R中查询元素_Javascript_Html_R_Shiny - Fatal编程技术网

Javascript 如何在R中查询元素

Javascript 如何在R中查询元素,javascript,html,r,shiny,Javascript,Html,R,Shiny,我想根据它们的HTML标记查询我闪亮应用程序中的元素。例如,对于以下应用程序,如何访问所有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

我想根据它们的HTML标记查询我闪亮应用程序中的元素。例如,对于以下应用程序,如何访问所有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侧接收:

observe({
    print(input$h1)
  })
可复制示例:


您的目标是从Shining应用程序中访问这些元素吗?是的。更具体地说,从应用程序中呈现的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)