2年后的评论
这是我以前的一篇帖子。基本上,我想通过带有字符串参数的函数用动态名称创建变量,并且变量存储在全局在函数范围之外,以后可以通过任何其他函数访问。
但是因为我不知道“全球”这个术语。所以,我很难解释。
享受!
Backstory:所以我想为自己的界面网页构建一个JS库。结果是,如果我在<div class="window SOMENAME"></div>
中添加div#Environment
。该网页将生成一个工作窗口。我已经完成了。
但必须声明某些JS对象才能使其正常工作
window["window" + winname].bmaxheight = $(cwindow).height();
,所以如果我添加一个新窗口&#34; .window.s
&#34;
<div class="window s">
<!--Each window(`div`) REQUIRES a `.window` class and a unique name(here, ".s"), there WILL be ONLY 2 classes.-->
...
</div>
,我必须手写以下object
声明。
windows = new Object();
windows.bmaxwidth = 0;
windows.bmaxheight = 0;
windows.bmaxpositionx = 0;
windows.bmaxpositiony = 0;
//Each new window(`div`) REQUIRES a new object named with the string "window" and the name(here, "s") appended.
那么如何为循环中object
(窗口)的每个新手动输入生成新的JS div
动态?< / p>
意思是,如果我只是在
中输入<div class="window SOMENAME"></div>
,它将自动声明对象:
windowSOMENAME = new Object();
windowSOMENAME.bmaxwidth = 0;
windowSOMENAME.bmaxheight = 0;
windowSOMENAME.bmaxpositionx = 0;
windowSOMENAME.bmaxpositiony = 0;
概念:
function loop() {
1.check all divs within $("#Environment") and make an array of names for new objects(above are "s" and "SOMENAME")(no problem)
2.generate new objects in a loop ("window" + "NAME" and declare bmaxwidth, bmaxheight...)
}
如果需要更多信息,请发表评论。
答案 0 :(得分:0)
如果你想为HTML添加一个新的CSS类,可以使用以下命令(jQuery)
var cssClass = $('<style>body { background: blue; }</style>')
$('html > head').append(cssClass);
这将创建cssClass并将其附加到head标记。
动态创建元素的方式与$(<<html>>)
相同。
你应该考虑在jQuery中创建一个插件来完成这项任务。它会简化整个过程。
答案 1 :(得分:0)
我可以使用其他语法来访问变量。因为全局变量存储在window
window["SOMENAME"] = new Object();
它也适用于
中的变量var k = "SOMENAME"
window[k] = new Object();
2年后编辑
更好的方法是最初和全局创建一些空对象,然后使用相应的&#34;动态变量&#34;填充它们。通过这种方式,可以更好地组织数据,而不是将所有内容转储到window
下。
示例:
var fruitBasket = {};
function addFruit(name, fruitProperties) {
/*Maybe some logics to determine whether the fruit already
exists in the basket to make this function more useful
than simply fruitBasket.SOMENAME = {SOMEOBJECT}*/
fruitBasket[name] = fruitProperties;
}
function getFruit(name) {
return fruitBasket[name];
}
addFruit("apple", {
color: "red",
growsOnTree: true
});
getFruit("apple");
或者你甚至可能想要更好地组织它:
var fruitBasket = {
storedFruits: {},
addFruit: function(...) {...},
getFruit: function(...) {...}
};