javascript - 尝试使用来自另一个函数的变量
问题描述
来自 C#,我在使用来自另一个函数的变量时遇到了一些问题:
// Define colors
albumart.addEventListener('load', function () {
var vibrant = new Vibrant(albumart);
var swatches = vibrant.swatches()
for (var swatch in swatches)
if (swatches.hasOwnProperty(swatch) && swatches[swatch]) {
var darkvibrant = swatches.DarkVibrant;
}
})
// Toggle styles
function mainUpdate(type) {
if (type == "music") {
isplaying ? albumart.src = "/var/mobile/Documents/Artwork.jpg?" + milli : albumart.src = "images/No-album-art.png";
isplaying ? icons.style.color = darkvibrant : icons.style.color = "#202727";
}
}
我试图darkvibrant
在第二个函数中使用,我试过这个:
var darkvibrant = {};
darkvibrant.color = swatches.DarkVibrant;
isplaying ? icons.style.color = darkvibrant : icons.style.color = "#202727";
我将不胜感激任何帮助。
解决方案
您需要使变量成为全局变量。因此,在第一个函数之外声明darkvibrant
变量以使其成为全局变量,然后在第一个函数中进行初始化。
var darkvibrant; // make it global
albumart.addEventListener('load', function () {
var vibrant = new Vibrant(albumart);
var swatches = vibrant.swatches()
for (var swatch in swatches)
if (swatches.hasOwnProperty(swatch) && swatches[swatch]) {
darkvibrant = swatches.DarkVibrant;
}
});
现在可以在第二个功能中使用。
另一种方法是您可以在window
对象上分配属性,window.darkvibrant
并在第二个函数中使用相同的语法:
albumart.addEventListener('load', function () {
var vibrant = new Vibrant(albumart);
var swatches = vibrant.swatches()
for (var swatch in swatches)
if (swatches.hasOwnProperty(swatch) && swatches[swatch]) {
window.darkvibrant = swatches.DarkVibrant;
}
});
推荐阅读
- group-by - 如何参数化 Power BI 桌面中的聚合列?
- python - 如何抓取这个特定网站的数据?
- bash - 从预期生成的进程重定向到日志文件
- java - 无法为硒自动化创建 Maven 项目
- java - 在 Eclipse 中将 Java 程序导出为带有其他文件的 JAR
- java - 如何将图像转换为字符串以将其读/写到 SQLite 数据库 - Android Studio (Java)
- r - R microbenchmark:如何将相同的参数传递给评估函数?
- mysql - 带2个主键的表怎么办?
- java - How to set spacing in Android GridLayout with Java?
- javascript - How does using a Proxy in js making a Promise look synchronous actually work?