2017-03-31 40 views
0

我有一個有趣的問題,讓我很難過。非常感謝任何幫助。如何自動將大量外部變量設置爲給定值?

基本情況如下。我正在編寫一個通用腳本文件,general.js,供大量網頁使用,每個網頁都有自己的關聯腳本文件pageN.js。這些pageN文件中的每一個都包含大量的變量t1,...,tn,其中每個頁面都不相同。 (一般Ñ將在50和100之間)

general.js我有一個「電燈開關」功能:

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其中我只需要指定,我希望binaryDigit爲1,並將其他二進制數字設置爲0.因此,例如,如果n = 50,那麼調用helperFunction(t1,t2,t3)應該執行myFunction([t1,1],[t2,1],[t3,1],[t4,0],...,[t50,0])

我的問題是:我該怎麼做?我只有有限的高級JavaScript經驗,所以我沒有線索,說實話。'

回答

0

解決了它後,我給了它一些進一步的想法(在廁所)。我的解決方案是爲每個pageN.js文件生成一個名爲variableArray的數組,該數組基本上是該文件中所有變量的列表。接下來,我在general.js定義我helperFunction如下:

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)