我想根據復選框的值更改引導按鈕的 css 類。如果復選框 ( input$x)的值被選中,即。euqals TRUE,我想添加一個類,當值為 false 時,我想洗掉該類。下面的代碼是我嘗試過的,但它不起作用。有人知道為什么它不起作用嗎?
library(shiny)
library(tidyverse)
library(htmltools)
ui = fluidPage(
tags$style(
HTML(
".testclass {background-color: pink;")),
tags$div(style = "margin: 100px;",
tags$input(type = "checkbox", "Check", id = "x"),
tags$button("Click", class="btn btn-default dropdown-toggle", id = "dropdownMenu1"))
)
server = function(input, output, session){
### CUSTOM FUNCTIONS
observeEvent(input$x, {
if(isTRUE(input$x)){
tagQuery(ui)$find("button")$filter(function(x, i) tagGetAttribute(x, "id") == "dropdownMenu1")$addClass("testclass")
}else{
tagQuery(ui)$find("button")$filter(function(x, i) tagGetAttribute(x, "id") == "dropdownMenu1")$removeClass("testclass")
}
})
}
shinyApp(ui, server)
uj5u.com熱心網友回復:
tagQuery不會對 DOM 執行任何操作,它只是重寫一個標簽。你可以做:
library(shiny)
library(htmltools)
ui = fluidPage(
tags$style(
HTML(".testclass {background-color: pink;")
),
tags$div(
style = "margin: 100px;",
tags$input(type = "checkbox", "Check", id = "x"),
uiOutput("mybutton")
)
)
server = function(input, output, session){
output[["mybutton"]] <- renderUI({
btn <- tags$button("Click", class="btn btn-default dropdown-toggle", id = "dropdownMenu1")
if(isTRUE(input$x)){
btn <- tagQuery(btn)$addClass("testclass")
}else{
btn <- tagQuery(btn)$removeClass("testclass")
}
btn$selectedTags()
})
}
shinyApp(ui, server)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/338648.html
