Javascript 尝试使用另一个函数中的变量
来自C#,我在使用另一个函数的变量时遇到一些问题:Javascript 尝试使用另一个函数中的变量,javascript,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) &am
// 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";
}
}
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;
}
});
我试图在第二个函数中使用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;
}
});
现在可以在第二个函数中使用
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.darkvibrant
,并在第二个函数中使用相同的语法:
// 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";
}
}
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;
}
});
我的猜测是darkvibrant不在范围内。您可以使darkvibrant成为全局的,但还有其他方法(例如闭包)。我试着这样使用它,但它不起作用。你的代码很好。应该还有其他问题,你无法访问变量的值。