【问题标题】:Return info from JS array to use as a variable globally从 JS 数组返回信息以用作全局变量
【发布时间】:2019-04-05 20:34:05
【问题描述】:

第一次在这里发帖,希望有人可以帮助我。

我还在学习JS,对语言不太了解,我在google上搜索过,但找不到解决办法

如果这是一个非常愚蠢的问题或之前已经回答过,我提前道歉

这是从 Google Sheet 文档中获取信息并将其放入数组中的代码(感谢 @Z-Bone)

var spreadsheetUrl ='https://spreadsheets.google.com/feeds/cells/1XivObxhVmENcxB8efmnsXQ2srHQCG5gWh2dFYxZ7eLA/1/public/values?alt=json-in-script&callback=doData';
var mainArray =[]

// The callback function the JSONP request will execute to load data from API
function doData(data) {
// Final results will be stored here    
var results = [];

// Get all entries from spreadsheet
var entries = data.feed.entry;

// Set initial previous row, so we can check if the data in the current cell is 
from a new row
var previousRow = 0;

// Iterate all entries in the spreadsheet
for (var i = 0; i < entries.length; i++) {
    // check what was the latest row we added to our result array, then load it 
to local variable
    var latestRow = results[results.length - 1];

    // get current cell
    var cell = entries[i];

    // get text from current cell
    var text = cell.content.$t;

    // get the current row
    var row = cell.gs$cell.row;

    // Determine if the current cell is in the latestRow or is a new row
    if (row > previousRow) {
        // this is a new row, create new array for this row
        var newRow = [];

        // add the cell text to this new row array  
        newRow.push(text);

        // store the new row array in the final results array
        results.push(newRow);

        // Increment the previous row, since we added a new row to the final 
results array
        previousRow++;
    } else {
        // This cell is in an existing row we already added to the results 
array, add text to this existing row
        latestRow.push(text);
    }

}

handleResults(results);
}

// Do what ever you please with the final array
function handleResults(spreadsheetArray) {
console.log(spreadsheetArray);
}

// Create JSONP Request to Google Docs API, then execute the callback function 
doData
$.ajax({
url: spreadsheetUrl,
jsonp: 'doData',
dataType: 'jsonp'
});

从这里我想将我的所有数组项声明为变量,以便我可以在全局站点上的任何其他函数中使用它们中的任何一个,或者从任何函数将其写入 innerHTML

如果将它们声明为变量不是正确的解决方案,请随意提出其他建议,正如我在 JS 初学者中所说的那样

提前感谢堆栈溢出家庭的帮助

【问题讨论】:

    标签: javascript arrays ajax google-sheets jsonp


    【解决方案1】:

    将你想要全局化的变量存储为window的属性:

    function handleResults(spreadsheetArray) {
        window.spreadsheetArray = spreadsheetArray;
    }
    

    测试:

    handleResults([1,2,3]);
    
    (function printArray() {
        console.log(window.spreadsheetArray);
    })();
    

    【讨论】:

    • 不确定我是否在这里正确执行此操作,但我似乎无法从电子表格数组中获取信息 这是我的笔的链接,其中包含更新的代码codepen.io/mali23/pen/BqexKg?editors=1011 非常感谢
    • 我在“测试”下面包含的代码只是为了演示您可以通过这种方式分配全局变量。它不应该对任何事情产生不利影响,但我不会将它包含在您的生产代码中。除此之外,您的代码看起来是正确的。设置断点以检查变量的值。从我在该代码笔中看到的情况来看,您的数组已正确存储,因此由此产生的任何问题都应作为新问题发布,因为它不再是该问题的主题。
    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2020-09-11
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多