首页 > 解决方案 > 尝试使用来自另一个函数的变量

问题描述

来自 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";

我将不胜感激任何帮助。

标签: javascript

解决方案


您需要使变量成为全局变量。因此,在第一个函数之外声明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;
    }
});

推荐阅读