Javascript 如何通过在DOM中查找变量来创建变量数组或对象?

Javascript 如何通过在DOM中查找变量来创建变量数组或对象?,javascript,jquery,Javascript,Jquery,我在一个Twig模板上生成一些JS变量,并在它们前面加上一个动态值。例如: <script type="text/javascript"> quoteGridId = 'grid_quote'; </script> <script type="text/javascript"> quoteContactGridId = 'grid_quote_contact'; </script> <script type="text/ja

我在一个Twig模板上生成一些JS变量,并在它们前面加上一个动态值。例如:

<script type="text/javascript">
    quoteGridId = 'grid_quote';
</script>

<script type="text/javascript">
    quoteContactGridId = 'grid_quote_contact';
</script>
<script type="text/javascript">
    archiveGridId = 'grid_archive';
</script>
更新:

让我们把我的问题弄清楚,让那些愿意帮忙的人知道。目前我正在开发一个遗留系统。这样的系统有一个生成
gridId
值的网格,最后包含一个JS文件,该文件使用var
gridId
执行多项操作

现在,我需要在同一页面上复制多个网格,这成为一个问题,因为两个网格生成相同的var名称:

gridId = 'something';
gridId = 'something1';
当脚本试图到达
gridId
var时,它总是获取最新的一个(something1),因此不会对第一个网格执行任何操作

我的解决方案是在每个
gridId
前面加上前缀,这样就产生了我的操作示例:

somethingGridId=‘something’; something1GridId='something1'

我试图找到一种通过传递这些动态GridID来重用主JS文件的方法,但我找不到一种方法来实现这一点

我想到的唯一解决方案是为每个网格创建相同的文件,然后将gridId的值更改为要使用的ID的名称


我愿意接受任何想法?

与其分配
quoteGridId='grid'
,不如创建一个顶级对象,然后将每个变量分配为一个键值对,比如:

var gridData = {}
gridData.quoteGridId = 'grid_quote'
gridData.quoteContactGridId = 'grid_quote_contact';
/* etc assignments */

//Access your data points like so in a loop, if you choose
Object.keys(gridData).forEach(key => {
   const val = gridData[key]
   //User `key`, and `val` however you'd like
})

您可以使用正则表达式(正则表达式?)搜索窗口变量,即
/.+GridId/
匹配以
GridId
结尾的任何单词或变量,然后可以根据需要对其进行迭代

示例:
var模式=/。+GridId/;
GridID=[]
for(窗口中的var varName){
if(模式测试(varName)){
push({varName:window[varName]})
}
}
console.log(gridid)

quoteGridId='grid_quote';
quoteContactGridId='grid'u quote'u contact';
archiveGridId='grid_archive';

我想你有你的使用清单。 每次将值推送到列表时,如下所示:

var myList = [];
myList.push('something');
myList.push('something1');
console.log(myList[0]);
console.log(myList[1]);
现在,您可以像这样访问所有这些文件:

var myList = [];
myList.push('something');
myList.push('something1');
console.log(myList[0]);
console.log(myList[1]);
或者就在最后:

console.log(myList[myList.length - 1])

你的意思是
window[“quoteGridId”]
?@mplungjan不确定这是否对我有帮助,我只举了三个例子,但可能不止这些。你有什么理由不能在细枝模板中创建数组吗<代码>var gridvars=['grid_archive','grid_quote_contact','grid_archive']。然后你可以将
窗口。gridvars
传递给你的脚本。@CharlieMartin看一下更新,也许这会清除一点我首先被问到的问题。更新并不能真正帮助澄清为什么你不能将这些放在对象中看一下更新,也许这会清除一点我首先被问到的问题我不认为你的方式也行