javascript - 在 Wix HTML 元素中使用本地存储 (JavaScript)
问题描述
我使用 Google Charts 在我的 Wix 页面上创建了一个 HTML 元素。我的网页访问者需要填写一份问卷,其想法是通过饼图向他们提供结果。这是我的 HTML 元素的部分代码:
<script type="text/javascript">
var ctx = document.getElementById('myChart').getContext('2d');
var myPieChart = new Chart(ctx,{
type: 'pie',
data: {
labels:["Rodeo", "Calypso", "Balthazar", "Luna", "Kiara", "Mistral", "Saya"],
datasets: [{
data: [10, 20, 30, 20, 25, 40, 15],
backgroundColor: ["#f97a03", "#52aff0", "#35a11d", "#f052e4", "#853fc2", "#f0f712", "#092978"],
}]
},
options: {}
});
</script>
上面的代码效果很好,我可以在网页上看到图表。现在,我不想使用预先确定的数据(如上面的 10、20、30、20、25、40、15),而是使用其值存储在 LocalStorage JavaScript 中的变量(变量的名称与上面的标签相同,但以“loc”为前缀)。
我试过了:
data: [local.getItem("locrodeo"), local.getItem("loccalypso"),
local.getItem("locsaya"), local.getItem("locbalthazar"),
local.getItem("locluna"), local.getItem("lockiara"),
local.getItem("locmistral")],
但我认为 API 不适用于 wix HTML 组件下的 JS。所以我想我需要从我的页面代码向 HTML 元素发送一条消息,其中包含信息。有谁知道这是怎么做到的吗?
从 Wix 帮助中心,我发现我需要发送这样的消息:
$w("#myHtmlElement").postMessage("Message for HTML Comp");
然后我需要在我的 HTML 元素中编写代码来接收信息:
<script type="text/javascript">
window.onmessage = (event) => {
if (event.data) {
let receivedData = event.data;
}
};
//...
</script>
为了清楚起见,我的目标是让饼图显示变量 locrodeo、loccalypso、locsaya、locluna、locbalthazar、locmistral 和 lockiara(存储在本地存储 JS 中)的值。
解决方案
这个例子正是你想要做的:https ://www.wix.com/code/home/example/Chart 。
推荐阅读
- node.js - npm坏了:找不到模块'proto-list'
- javascript - 为什么 document.getElementsByClassName 在我的情况下不起作用
- python - Python - SQLAlchemy:group_by() 多列,带有 sum()
- python - 熊猫迭代更新列值
- python - 使用 selenium 和 python 通过 CssSelector 的“开始于”方法定位元素
- react-native - 无法使用反应本机调试器进行调试
- kotlin - 如何在 Ktor 中接收 JSON 对象?
- javascript - webpack4: React babel - 你可能需要一个合适的加载器来处理这个文件类型
- python - 使用一个列表的值对第二个列表进行分组
- sql-server - 在 boostrapper 中安装 SQL Server 2014 Express 作为先决条件