使用jquery

时间:2016-06-07 14:18:44

标签: javascript jquery

我的页面上有很多javascript变量:

var opts_???? = ...
var opts_???? = ...
var opts_???? = ...

内容管理系统为????分配了一个随机数,因此我不知道该变量的全名。

我正在寻找任何未定义的。

jQuery中是否有办法循环遍历以opts_开头的所有变量,以便我可以测试它们是否未定义?

如果有帮助,变量都是全局变量。

如果不是在jQuery中,我会满足于常规的javascript。

4 个答案:

答案 0 :(得分:7)

仅当变量全部声明为全局范围(因此也可用作全局window对象的属性)时,才可以执行此操作。

既然属于您,您可以使用Object.keys(window)获取所有此类属性的名称,然后使用$.eachArray.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_1234window['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);

希望这会对你有所帮助