我的页面上有很多javascript变量:
var opts_???? = ...
var opts_???? = ...
var opts_???? = ...
内容管理系统为????
分配了一个随机数,因此我不知道该变量的全名。
我正在寻找任何未定义的。
jQuery中是否有办法循环遍历以opts_
开头的所有变量,以便我可以测试它们是否未定义?
如果有帮助,变量都是全局变量。
如果不是在jQuery中,我会满足于常规的javascript。
答案 0 :(得分:7)
仅当变量全部声明为全局范围(因此也可用作全局window
对象的属性)时,才可以执行此操作。
既然属于您,您可以使用Object.keys(window)
获取所有此类属性的名称,然后使用$.each
或Array.prototype.forEach
依次测试每个属性。
var opts = Object.keys(window).filter(function(n) {
return n.substring(0, 5) === 'opts_';
});
var opts_undefined = opts.filter(function(n) {
return window[n] === undefined;
});
[为了提高效率而写成两个要求]
答案 1 :(得分:6)
如果变量在全局范围内(即,不在函数中创建),则它们也应该作为window
对象的属性。换句话说,变量opts_1234
也可以window.opts_1234
或window['opts_1234']
进行访问。
获取所有变量的最简单方法是:
var variables = Object.keys(window).filter(function(prop) {
return prop.substring(0, 5) === 'opts_';
});
现在variables
包含一系列名称,例如['opts_1', 'opts_666']
您还可以将该过滤器扩展为仅包含那些未定义的变量:
var variables = Object.keys(window).filter(function(prop) {
return prop.substring(0, 5) === 'opts_' && window[prop] !== undefined;
});
答案 2 :(得分:1)
var opts_1 = 'test';
var opts_2 = 'test1';
var opts_3 = 'test2';
var opts_4 = undefined;
var vars = Object.keys(window).filter(function(key){
return (key.indexOf("opts_")!=-1 && window[key] == undefined)
});
console.log(vars);
答案 3 :(得分:0)
使用:
var marker='opts_';
var results=$('selector').find(marker);
希望这会对你有所帮助