gpt4 book ai didi

JavaScript 全局动态变量从函数到函数未定义,似乎是局部范围

转载 作者:行者123 更新时间:2023-12-03 06:44:19 25 4
gpt4 key购买 nike

我在这两个函数的交互方面遇到问题。它们用于元素的 onclick 调用。本质上(因为事情超出了我的控制范围)我需要记住何时以及什么隐藏了一个元素。

一切都完全按照我想要的方式工作,除了显示函数中未定义的检查。当我隐藏事物时,我创建一个全局变量,当我想要显示事物时,我想再次使用它。我遇到的唯一问题是,在 show 函数中,我认为是全局变量的似乎并不是。

function branchShow(targetID, triggerID){
var target = document.getElementById(targetID);
var trigger = document.getElementById(triggerID);
var parentID = trigger.parentElement.parentElement.parentElement.parentElement.id;
var globalMemory = "wasIHiddenBefore_" + parentID

if (typeof window[globalMemory] !== "undefined"){
if (window[globalMemory]) {
console.log(globalMemory + " is evaluated true");
window[globalMemory] = false;
} else {
console.log(globalMemory + " is evaluated false");
target.setAttribute("style","display: block;");
}
} else {
console.log(globalMemory + " is undefined");
target.setAttribute("style","display: block;");
}
};

function branchHide(targetID, triggerID){
if (typeof i !== "undefined" ) {var iMemory = i;}
if (typeof j !== "undefined" ) {var jMemory = j;}
if (typeof k !== "undefined" ) {var kMemory = k;}
var target = document.getElementById(targetID);
target.setAttribute("style","display: none;");

//don't want to flag on load
if (hasLoadFinished){
window["wasIHiddenBefore_" + targetID] == true;
console.log("wasIHiddenBefore_" + targetID + " created as true");
}
.
.
.

示例执行的控制台输出如下。第 4 行和第 6 行是显示问题的最关键。

wasIHiddenBefore_1e16f2513f7842d5be352ca01b5c1c3f is undefined
wasIHiddenBefore_f82bdc0c527541e68fc405e9ac70015b is undefined
wasIHiddenBefore_2d869e44f4c44454a8415eecbd64061e created as true
wasIHiddenBefore_f82bdc0c527541e68fc405e9ac70015b created as true
wasIHiddenBefore_1e16f2513f7842d5be352ca01b5c1c3f is undefined
wasIHiddenBefore_f82bdc0c527541e68fc405e9ac70015b is undefined

有谁知道为什么我会看到我所看到的以及我可以做些什么来使这些动态变量在函数之间全局作用?谢谢。

最佳答案

window["wasIHiddenBefore_"+ targetID] == true; 是比较,而不是赋值。尽管记录了“...创建为 true”,但您从未设置该变量。您需要 window["wasIHiddenBefore_"+ targetID] = true;

关于JavaScript 全局动态变量从函数到函数未定义,似乎是局部范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37813015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com