Javascript 变量出现在控制台中但未定义
Javascript variable comes up in console but is undefined
我在 https://gambur.ch 上的模板没有我可以调用以获取库存的回调函数。它将带有变体 ID 的 URLSeacrchParam 添加到 URL.
我设法捕获该变体 ID 并将其显示在控制台中(请参阅:https://gambur.ch/collections/reithosen/products/reithose-karen-black-onyx 单击选项)我必须使用超时,因为它需要几毫秒才能更新参数...
但是我无法让脚本的第二部分正常工作,因为 currentVariant 变量显示 "undefined"
目标是取消隐藏给定变体的库存...
$(".option-value-input").click(
function() {
console.log("clicked...reading stock information");
setTimeout(
function() {
var currentVariant = new URLSearchParams(window.location.search);
console.log(currentVariant.get('variant'));
},
500);
$(".variantStock").each(function(){
var variantsIDs = $(this).data("id");
if(currentVariant === variantsIDs ){
$(this).removeClass("is-hidden");
}else{
$(this).addClass("is-hidden");
}
});
});
这是典型的异步编码错误。您的代码在变量被赋值之前执行,因为它不会等待 500 毫秒。
$(".option-value-input").click(
function() {
console.log("clicked...reading stock information");
setTimeout(
function() {
var currentVariant = new URLSearchParams(window.location.search);
console.log(currentVariant.get('variant'));
$(".variantStock").each(function(){
var variantsIDs = $(this).data("id");
if(currentVariant === variantsIDs ){
$(this).removeClass("is-hidden");
}else{
$(this).addClass("is-hidden");
}
});
},
500);
});
我在 setTimeout 中将完整代码添加到 运行,而您希望它是 运行。
我在 https://gambur.ch 上的模板没有我可以调用以获取库存的回调函数。它将带有变体 ID 的 URLSeacrchParam 添加到 URL.
我设法捕获该变体 ID 并将其显示在控制台中(请参阅:https://gambur.ch/collections/reithosen/products/reithose-karen-black-onyx 单击选项)我必须使用超时,因为它需要几毫秒才能更新参数...
但是我无法让脚本的第二部分正常工作,因为 currentVariant 变量显示 "undefined"
目标是取消隐藏给定变体的库存...
$(".option-value-input").click(
function() {
console.log("clicked...reading stock information");
setTimeout(
function() {
var currentVariant = new URLSearchParams(window.location.search);
console.log(currentVariant.get('variant'));
},
500);
$(".variantStock").each(function(){
var variantsIDs = $(this).data("id");
if(currentVariant === variantsIDs ){
$(this).removeClass("is-hidden");
}else{
$(this).addClass("is-hidden");
}
});
});
这是典型的异步编码错误。您的代码在变量被赋值之前执行,因为它不会等待 500 毫秒。
$(".option-value-input").click(
function() {
console.log("clicked...reading stock information");
setTimeout(
function() {
var currentVariant = new URLSearchParams(window.location.search);
console.log(currentVariant.get('variant'));
$(".variantStock").each(function(){
var variantsIDs = $(this).data("id");
if(currentVariant === variantsIDs ){
$(this).removeClass("is-hidden");
}else{
$(this).addClass("is-hidden");
}
});
},
500);
});
我在 setTimeout 中将完整代码添加到 运行,而您希望它是 运行。