gpt4 book ai didi

javascript - Shiny 的数据表回调

转载 作者:搜寻专家 更新时间:2023-11-01 05:29:35 24 4
gpt4 key购买 nike

我是一个 javascript 新手,所以我无法让 DataTables 回调选项中的函数正常工作。

在这个小示例中,我想编写一个 javascript 函数,以便当用户在 mtcars 数据表中选择一行时,如果 MPG 的值大于 20,则将其作为一个警告说“对你有好处!”。它类似于 this ,但该示例未使用 shiny。这是我尝试过的:

library(shiny)
library(DT)
server <- function(input, output) {
output$one <- DT::renderDataTable(mtcars,options=list(callback=DT::JS(
'function(table) {
table.on("click.dt","tr", function() {
var data=table.row(this).data();
if (parseFloat(data[0]>20.0))
alert("Good for you!");
});}'
)))
}

ui <- fluidPage(mainPanel(DT::dataTableOutput("one")))
shinyApp(ui = ui, server = server)

选择 MPG 大于 20 的行不会像我想要的那样产生警报。我觉得我可能从根本上误解了 javascript 在回调选项中的工作方式。任何帮助将不胜感激。

问候

最佳答案

你只需要 renderDataTablecallback 参数中的 callback 函数体(你不需要 options 此处:

    server <- function(input, output) {
output$one <- DT::renderDataTable(mtcars,callback=JS(
'table.on("click.dt","tr", function() {
var data=table.row(this).data();
if (parseFloat(data[1])>20.0)
alert("Good for you!");
})'
))
}

您的 parseFloat 也围绕着整个 if 条件,data[0] 是汽车的名称,data [1] 将是 mpg。

您可以通过使用开发人员工具和 javascript 中的 console.log 打印到控制台来解决此问题。例如,您可以在 if 之前添加 console.log(data) 并检查它的外观。

关于javascript - Shiny 的数据表回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35634272/

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