我想在启动时 Select DataTable的第一行.我计划使用这段JS代码,但不确定它是否正确:

dataTable.row(':eq(0)').select();

使用回调

它不起作用:

library(shiny)
library(DT)

js <- c(
  "table.on('initComplete', function(settings, json) {",
  "  this.row(':eq(0)').select();",
  "  }",
  "});"
)

ui <- fluidPage(
  DTOutput("table")
)


server <- function(input, output, session) {
  output$table <- renderDT({
    datatable(
      mtcars,
      callback = JS(js)
    )
  })
}

shinyApp(ui, server, options = list(
  launch.browser = TRUE
))

在运行中访问表格

但我不知道如何在我shiny 的应用程序中找到变量名:

library(shiny)
library(shinyjs)
library(DT)

ui <- fluidPage(
  useShinyjs(),
  DTOutput("table")
)


server <- function(input, output, session) {
  output$table <- renderDT({
    datatable(
      mtcars
    )
  })
  
  ### I need to know the `dataTableVariable`
  runjs("dataTableVariable.row(':eq(0)').select();")
}

shinyApp(ui, server, options = list(
  launch.browser = TRUE
))

推荐答案

注意,你的callback有一个问题,那就是结尾的}太多了.通过一些小的修改,我们可以将callback传递到dataTableinitComplete选项,然后它就会工作:

library(shiny)
library(DT)

js <- c(
    "function() {",
    "  $(this.api().table().row(':eq(0)').node()).addClass('selected');",
    "}"
)

ui <- fluidPage(
    DTOutput("table")
)


server <- function(input, output, session) {
    output$table <- renderDT({
        datatable(
            mtcars,
            options = list(
                initComplete = JS(js)
            )
        )
    })
}

shinyApp(ui, server)

另一种可能是直接在应用程序中设置定义:

library(shiny)
library(DT)

js <- "
$('#table').on('init.dt', function() {
    $(this).find('tbody tr:first-child').addClass('selected');
});
"

ui <- fluidPage(DTOutput("table"),
                tags$script(JS(js)))

server <- function(input, output, session) {
    output$table <- renderDT({
        datatable(mtcars)
    })
}

shinyApp(ui, server)

Javascript相关问答推荐

Apexcharts显示超出系列长度的日期时间轴

在TypScript中计算使用旋转谷仓的鸡舍所需的农场数量

如何在react + react路由域名中使用DeliverBrowserRouter?

如何使用JavaScript动态地将CSS应用于ToDo列表?

如何在JavaScript中在文本内容中添加新行

如何才能拥有在jQuery终端中执行命令的链接?

将现场录音发送到后端

屏幕右侧屏障上的产卵点""

ChartJs未呈现

如何将多维数组插入到另一个多维数组中?

对路由DOM嵌套路由作出react

让chart.js饼图中的一个切片变厚?

如何限制显示在分页中的可见页面的数量

如何使用基于promise (非事件emits 器)的方法来传输数据?

expo 联系人:如果联系人的状态被拒绝,则请求访问联系人的权限

如何组合Multer上传?

如何根据查询结果重新排列日期

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

每隔3个项目交替显示,然后每1个项目交替显示