2015-12-11 3 views
1

Я работаю над кодом Javascript, который генерирует случайный текст из меньших наборов строк. Проблема в том, что для упрощения чтения и расширения кода я определенно должен использовать одну строку для каждой строковой переменной.Отдельные массивы из основного файла сценария

Что-то вроде этого, очень широко.

var array = [ 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
"text", 
... 
] 

var array_b = [ 
//(the same again) 
] 

var result = array[math.floor(math.random())] + " " + array_b[math.floor(math.random())] 

Излишне говорить, что это довольно неудобно. Очевидно, не невозможно привыкнуть; но если это возможно, я бы избавился от этих длинных массивов.

Есть ли способ для этого? Поместить их в другой файл, возможно, вызывая их из другого скрипта другой страницы? Или что-нибудь?

ответ

3

Вы можете поместить массив в JSON (JavaScript Object Notation) файл, а затем использовать AJAX запрос, чтобы загрузить их

data.json

["text","text","text","text","text","text","text","text","text","text",...] 

main.js

//if using jQuery 
jQuery.ajax({ 
    url:"data.json", 
    dataType:"json" 
}).then(function(data){ 
    //'data' will be your array use it 
}); 

//if not using jQuery 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     //parse the JSON text 
     var data = JSON.parse(xmlhttp.responseText); 
     //call a function passing it the array 
     response(data); 
    } 
}; 
xmlhttp.open("GET", "data.json"); 
xmlhttp.send(); 

function response(data){ 
    //data will be your array use it 
} 

Вы также можете просто добавить их в отдельный файл js и добавить второй <script> элемент

data.js

var data =["text","text","text","text","text","text","text","text","text","text",...] 

main.html

<head> 
    <script src="data.js"></script> 
    <script src="main.js"></script> 
</head> 
1

Вы можете просто добавить их в другой файл, если вы не забудьте загрузить их обоих и убедитесь, что они находятся в глобальном объекте окна. Это означает, что вместо того, чтобы использовать

var array_a = []

вы используете:

window.array_a = []

и в текущем файле (где вы делаете всю работу), вы ссылаться на них в качестве window.array_a вместо просто array_a.

Кроме того, в зависимости от используемого редактора он, скорее всего, позволит вам свернуть любые такие массивы или объявления функций по причинам, которые вы описываете, что также устранит проблему. Примером может служить Sublime Text.

+0

Вы совершенно правы о коллапсе вещи; К сожалению, я работаю с данным редактором Tumblr, так что это не сработает. Загрузка сценария JS также довольно сложна (по крайней мере, я понятия не имею, как это работает на Tumblr), но я обязательно найду способ для этого - или измените Wordpress в худшем случае. Большое спасибо! –

Смежные вопросы