Основываясь на дополнительной части о желании открыть таблицу kable
, я взглянул на некоторые функции из пакета htmltools
для создания элементов HTML. То, как я придумал, использует наименьшее количество Javascript через кодовый блок js
.
Обычно я создаю кнопку с помощью shiny::actionButton
и присоединяю к ней обработчик щелчков Javascript, предоставляя имя функции атрибуту onclick
. Таблица вязания находится внутри оболочки HTML
, поэтому она будет правильно отображаться внутри элемента <div>
как контейнера. Этот контейнер имеет свойство hidden
, изначально установленное в значение true.
Обработчик кликов - это единственный настоящий Javascript, который можно написать, и это функция, которая находит <div>
по идентификатору и устанавливает для ее свойства hidden
значение false.
RMarkdown:
---
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
library(htmltools)
shiny::actionButton("show_table_button",
label = "Show table",
onclick = "button_handler()")
div(id = "tableContainer",
hidden = "true",
HTML(knitr::kable(head(iris), format = "html")))
```
```{js}
function button_handler() {
document.getElementById('tableContainer').hidden = false;
}
```
Это создает:
После нажатия кнопки:
Обратите внимание, что есть некоторые другие пакеты для написания более сложного кода Javascript в R - я не использовал ни одного, чтобы рекомендовать его, - но я пытался ограничить пакеты тем, что вы уже имели, от использования всего, что связано с блестящими / HTML-виджетами .