如何使用 shinyjs 从服务器更改 shinydashboard 中的标题颜色

How to change the title color in shinydashboard from server using shinyjs

我想从服务器部分更改 shinydashboard 中 header 的标题。简单的文本,例如p(),可以改,而标题好像没改。

library(shinydashboard)
library(shiny)

header <- dashboardHeader(title='want to be red') |> 
        tagAppendAttributes(id='nn',.cssSelector = 'span')

side <- dashboardSidebar(
    useShinyjs(),
    inlineCSS(list('.red' = "color: red")),
    p(id = "p", "to red color")
)

body <- dashboardBody()

ui <- dashboardPage(header,side,body,title = 'nhanesR')

server <- function(input, output, session){
    toggleClass(id = 'nn', "red")
    toggleClass(id = 'p', "red")
}
shinyApp(ui,server)
  1. 你忘了图书馆 shinyjs
  2. 最好在 body 中加载 shinyjs useShinyjs()
  3. 对于标题,你不能简单地添加红色class。原始样式表具有更强大的选择器,可以防止您更改颜色。我们需要使用内联样式,它具有几乎最高的优先级来覆盖颜色。
library(shinydashboard)
library(shiny)
library(shinyjs)
header <- dashboardHeader(title='want to be red') |> 
    tagAppendAttributes(id='nn',.cssSelector = 'span')

side <- dashboardSidebar(
    inlineCSS(list('.red' = "color: red")),
    p(id = "p", "to red color")
)

body <- dashboardBody(
    useShinyjs()
)

ui <- dashboardPage(header,side,body,title = 'nhanesR')

server <- function(input, output, session){
    runjs('$("#nn").css("color", "red")')
    toggleClass(id = 'p', "red")
}
shinyApp(ui,server)

除非您想动态更改它,否则不确定为什么要使用 shinyjs 来执行此操作。我们可以在 UI.

上用 tags$style 完成所有这些