如何使用JavaScript/runjs修改Shiny中id为btnGenerate的按钮文本
你原来的update方法不生效的核心原因是调用时传入的元素id错误,ui里定义的actionLink的id为btnGenerate,你代码里写的是"button",无法匹配到对应元素,自然更新失败。
方案1:原生Shiny更新方法(推荐,无需引入JS)
Shiny的actionLink组件可直接使用updateActionButton方法更新文本,修正id即可生效:
# server.R 示例 # 此处txt为你自定义的新按钮文本 txt <- "自定义新文本" updateActionButton(session, "btnGenerate", label = txt)
方案2:使用runjs执行JS代码实现
如果需要通过JavaScript修改,直接使用id选择器定位btnGenerate元素即可,有两种常用写法:
# 原生JS写法 runjs("document.getElementById('btnGenerate').innerText = '自定义新文本';") # jQuery写法(Shiny默认内置jQuery,可直接使用) runjs("$('#btnGenerate').text('自定义新文本');")
如果需要在应用初始化阶段就修改按钮文本,建议等待页面DOM渲染完成后再执行JS,避免找不到元素:
runjs("$(document).on('shiny:connected', function() { $('#btnGenerate').text('自定义新文本'); })")
内容的提问来源于stack exchange,提问作者jKraut
相关产品推荐
相关产品推荐

