在 rhandsontable 中更改背景图像(或任何两个 css 属性)

Changing background-image (or any two worded css properties) in rhandsontable

有很多示例可以说明如何将 自定义呈现 rhandsontables 结合使用,但不幸的是,它们都使用一个单一的措辞 css 属性,例如 colorbackground.

两个css-propertiesbackground-colorbackground-imagefont-size等怎么样?用点 (.) 替换连字符 (-) 不起作用。

并且使用连字符会破坏代码并引发此错误:

ReferenceError: invalid assignment left-hand side

在该代码示例中,如果值为 "F",我想将线性渐变指定为 background-image 并将颜色更改为红色。 出现红色,但没有出现渐变。

我该如何解决?

library(rhandsontable)
library(shiny)

DF = data.frame(val = 1:10, bool = TRUE, big = LETTERS[1:10], stringsAsFactors = FALSE)

ui <- fluidPage(
  rHandsontableOutput("tbk")
)

server <- function(input, output) {
  output$tbk <- renderRHandsontable({
    rhandsontable(DF, width = 550, height = 300) %>%
      hot_cols(renderer = "
               function (instance, td, row, col, prop, value, cellProperties) {
               Handsontable.renderers.TextRenderer.apply(this, arguments);

               if (value == 'F') {
                 td.style.background-image = 'linear-gradient(to right, transparent, green)';
                 td.style.color = 'red';

               } else if(value == 'J') {
                 td.style.background = 'lightgreen';

               } else if(value == 'A' | value == 'x') {
                td.style.background = 'lightblue'}
               }")
  })
}

shinyApp(ui, server)

如果我再试几分钟,我就不需要问这个问题了。但无论如何,它可能对其他为此苦苦挣扎的人有用,因为我没有找到太多关于它的参考。

解决办法是去掉连字符和点,使第一个字母大写

所以 background-image 变成 backgroundImage,或者 font-size 变成 fontSize!

library(rhandsontable)
library(shiny)

DF = data.frame(val = 1:10, bool = TRUE, big = LETTERS[1:10], stringsAsFactors = FALSE)

ui <- fluidPage(
  rHandsontableOutput("tbk")
)

server <- function(input, output) {
  output$tbk <- renderRHandsontable({
    rhandsontable(DF, width = 550, height = 300) %>%
      hot_cols(renderer = "
               function (instance, td, row, col, prop, value, cellProperties) {
                 Handsontable.renderers.TextRenderer.apply(this, arguments);
                 if (value == 'F') {
                   td.style.backgroundImage = 'linear-gradient(to right, transparent, green)';
                   td.style.fontSize = '25px';
                   td.style.color = 'red';

                 } else if(value == 'J') {
                   td.style.background = 'lightgreen';

                 } else if(value == 'A' | value == 'x') {
                  td.style.background = 'lightblue'}
               }")
  })
}
shinyApp(ui, server)