使用 javascript 从 DT 返回值
returning value from DT with javascript
我想在此处发布的答案中再添加一行:
具体来说,我想 return 单击行的 "a" 字段,所以我添加了
var a = table.rows[row_].cells[col].innerhtml
但什么也没发生。
这是代码。可能吗?
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(DT::dataTableOutput('table')),
server = function(input, output, session) {
output$table <- DT::renderDataTable({
datatable(data.frame(a = c(1,2),b=c(2,3)), rownames = FALSE, selection = 'none', callback = JS("table.on('click.dt', 'td', function() {
var row_=table.cell(this).index().row;
var col=table.cell(this).index().column;
var rnd= Math.random();
var a = table.rows[row_].cells[col].innerhtml
var data = [row_, col, rnd,a];
Shiny.onInputChange('rows',data );
});")
)}
)
observeEvent(input$rows, {
print(input$rows)
#print(Sys.time())
})}
))
谢谢。
如果您想查看行中的点击次数,可以使用以下回调函数:
callback=JS("table.on('click.dt', 'tr', function() {
var data=table.row(this).data();
Shiny.onInputChange('rows',data[0]);
});")
这会查看行 (tr
) 上的点击事件并直接获取数据,然后 returns 第一列中的值。
我想在此处发布的答案中再添加一行:
具体来说,我想 return 单击行的 "a" 字段,所以我添加了
var a = table.rows[row_].cells[col].innerhtml
但什么也没发生。
这是代码。可能吗?
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(DT::dataTableOutput('table')),
server = function(input, output, session) {
output$table <- DT::renderDataTable({
datatable(data.frame(a = c(1,2),b=c(2,3)), rownames = FALSE, selection = 'none', callback = JS("table.on('click.dt', 'td', function() {
var row_=table.cell(this).index().row;
var col=table.cell(this).index().column;
var rnd= Math.random();
var a = table.rows[row_].cells[col].innerhtml
var data = [row_, col, rnd,a];
Shiny.onInputChange('rows',data );
});")
)}
)
observeEvent(input$rows, {
print(input$rows)
#print(Sys.time())
})}
))
谢谢。
如果您想查看行中的点击次数,可以使用以下回调函数:
callback=JS("table.on('click.dt', 'tr', function() {
var data=table.row(this).data();
Shiny.onInputChange('rows',data[0]);
});")
这会查看行 (tr
) 上的点击事件并直接获取数据,然后 returns 第一列中的值。