我在rMarkdown文档中简单实现了html下拉菜单,并且我使用V8 r包来使用javascript来执行此操作。
---
title: "js + plotly"
author: ""
date: "`r Sys.Date()`"
output:
ioslides_presentation:
widescreen: true
smaller: false
---
## Zero slide
<div>
<select name="newSkill" id="newSkill">
<option value="1">A skill</option>
<option value="2">Another skill</option>
<option value="3">Yet another skill</option>
</select>
</div>
```{r}
library(V8)
ct <- v8()
ct$assign("getFromDrop", JS("(function(){var skillsSelect = document.getElementById('newSkill'); var selectedText = skillsSelect.options[skillsSelect.selectedIndex].text; return(selectedText);})"))
ct$assign("bar", JS("getFromDrop()"))
output <- ct$get("bar")
print(output)
```
我不知道我做错了什么,但它不起作用。我收到了以下错误消息:
eval中的错误(替换(expr),envir,enclos): ReferenceError:未定义文档 调用:... get_str_output - &gt;相同 - &gt; context_eval - &gt; .CALL
拜托,您能否给我一些提示或建议,以便按预期工作。非常感谢提前。
答案 0 :(得分:0)
如果要分配回R
变量,则需要Shiny或类似内容,例如fiery或jug或您自己的自定义websocket实现。由于@hrbrmstr状态V8
被设计为独立运行,并且不了解在RStudio查看器或浏览器中实例化的浏览器环境。
如果您不需要分配回R
变量,则可以执行以下操作。
---
title: "js + plotly"
author: ""
date: "`r Sys.Date()`"
output:
ioslides_presentation:
widescreen: true
smaller: false
---
## Zero slide
<div>
<select name="newSkill" id="newSkill" onchange="getFromDrop()">
<option value="1">A skill</option>
<option value="2">Another skill</option>
<option value="3">Yet another skill</option>
</select>
</div>
<script>
function getFromDrop{
var skillsSelect = document.getElementById('newSkill');
var selectedText = skillsSelect.options[skillsSelect.selectedIndex].text;
return(selectedText);
}
</script>
```