如何自动将大量外部变量设置为给定值?

时间:2017-03-31 15:53:58

标签: javascript

我有一个有趣的问题,让我难以理解。非常感谢您的任何帮助。

基本情况如下。我正在编写一个通用脚本文件general.js,用于大量网页,每个网页都有自己的关联脚本文件pageN.js。这些pageN文件中的每一个都包含大量变量t1,...,tn,每页的 n 不同。 (通常 n 将在50到100之间。)

general.js我有一个" lightswitch"功能:

function onOff(t,binaryDigit){
   if ( binaryDigit == 0 ) { // hide graphic element associated with t
   }
   else { // show graphic element associated with t
   }
}

以及将onOff应用于任意数量的有序对[tk,binaryDigit]的函数:

function myFunction() {
    for (var i = 0; i < arguments.length; i++) {
        onOff(arguments[i][0],arguments[i][1])
    }
}

由于我经常打电话给myFunction,而且每次大多数binaryDigits都必须设置为0,我想构建一个helperFunction,我只需要在其中指定tk我希望binaryDigit为1,并将其他二进制数设置为0.因此,例如,如果 n = 50,则调用{{1}应该执行helperFunction(t1,t2,t3)

我的问题是:我该怎么做?我对高级JavaScript的经验有限,所以我没有线索,说实话。

1 个答案:

答案 0 :(得分:0)

在进一步思考之后(在马桶上)解决了这个问题。我的解决方案是为每个pageN.js文件生成一个名为variableArray的数组,该数组本质上是该文件中所有变量的列表。接下来,我在helperFunction中定义general.js,如下所示:

var helperFunction = function() {
    var argArray = Array.prototype.slice.call(arguments);
    var varArray = argArray[argArray.length-1];
    var elementsOff = $(varArray).not($(argArray)).get();
    for (var i = 0; i < arguments.length; i++) {
        onOff(arguments[i],1);
    }
    for (var i = 0; i < elementsOff.length; i++) {
    onOff(elementsOff[i],0);
   }
};

函数被调用如下:helperFunction(t1,t2,t3,variableArray)