【发布时间】:2017-08-21 00:56:33
【问题描述】:
下面是一个功能齐全的工作代码。当我将其复制粘贴到文本文件testFile.html 然后使用浏览器打开时,它工作正常。
但我希望selectCollege 函数在initViz 函数之后立即执行
我试过了
<body onload="initViz();selectCollege('Engineering');"> . . .
但它没有用。如何使 selectCollege 函数在 initViz 之后立即执行?
<!DOCTYPE html>
<html>
<head>
<title>Select Marks</title>
<script type="text/javascript"
src="https://public.tableau.com/javascripts/api/tableau-2.min.js"></script>
<script type="text/javascript">
var viz, sheet;
function initViz() {
var containerDiv = document.getElementById("vizContainer"),
url = "http://public.tableau.com/views/RegionalSampleWorkbook/College",
options = {
"Academic Year": "",
hideTabs: true,
onFirstInteractive: function () {
sheet = viz.getWorkbook().getActiveSheet();
}
};
viz = new tableau.Viz(containerDiv, url, options);
}
function selectCollege(college_name) {
sheet.selectMarksAsync("College", college_name, tableau.SelectionUpdateType.REPLACE);
}
</script>
</head>
<body onload="initViz();">
<div id="vizContainer"></div>
<br />
<button onclick="selectCollege('Engineering');">Select a value</button>
</body>
</html>
【问题讨论】:
-
<body onload="initViz();selectCollege('Engineering');>-><body onload="initViz();selectCollege('Engineering');">(请注意您给出的示例中缺少的") -
为什么不在initViz函数末尾添加
selectCollege('Engineering') -
取决于你想要在 dom 渲染之前还是之后。您可以在没有 init 的情况下运行命令
-
@PatrickRoberts 是的;是问题中的错字。在我的文件中,我有
quote我使用颜色编码编辑器。所以报价在那里,但仍然不起作用 -
好吧,我还注意到
sheet直到onFirstInteractive()被调用时才被初始化,所以你请求的可能是不可能的。当您尝试我的建议时,错误日志会说什么?我的猜测是它说Uncaught TypeError: Cannot read property 'selectMarksAsync' of undefined
标签: javascript initialization tableau-api onload