Tujuan saya adalah mengubah actionButton css dengan setiap klik, apakah ada cara yang bisa saya terapkan tanpa menggunakan shineBS dan shinyjs?

Silakan lihat contoh minimal yang dapat direproduksi di bawah ini.

library(shiny)
shinyApp(
  ui = fluidPage(
    tags$style("#action{color:black;}"),
    actionButton("action", label = "Action")
  ),
  server = function(input, output) {
    observeEvent(input$action, {
      message(input$action %% 2)
      if (input$action %% 2) {
        tags$style("#action{color:red;}")
      } else {
        tags$style("#action{color:black;}")
      }
    })
  }
)

Klik 1 merah

Klik 2 hitam

Klik 3 merah

Klik 4 hitam

Klik 5 merah

...

0
user13392815 4 Juli 2020, 04:21

1 menjawab

Jawaban Terbaik

Cara JavaScript:

js <- "
function changeColor(button){
  var currentColor = button.style.color;
  var newColor = currentColor === 'red' ? 'black' : 'red';
  button.style.color = newColor;
}
"

ui <- basicPage(
  tags$head(tags$script(HTML(js))),
  actionButton(
    "btn", "Click me", style = "color: red;", 
    onclick = "changeColor(this)"
  )
)

server <- function(input, output, session){}

shinyApp(ui, server)
1
Stéphane Laurent 4 Juli 2020, 07:30