я пытаюсь создать массив из window.location.hash переменной, но я перестал работать.
Мой код:
$.each(window.location.hash.replace("#", "").split("&"), function (i, value) {
value = value.split("=");
var my_item = {value[0] : value[1]};
form_data[i] = my_item;
});
console.log(form_data);
Спасибо.
Вот пример, основанный на следующем URL:
http://www.someUrl.com/Index.htm#foo=bob&moo=alice
<!DOCTYPE html>
<html lang="en">
<head>
<title>hash me long time</title>
</head>
<body>
<p>Hello World!</p>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function () {
var hash = window.location.hash.replace('#', '').split('&');
var myArray = new Array();
for (var x = 0; x < hash.length; x++) {
var itemArray = hash[x].split('=');
var item = new Object();
item.key = itemArray[0];
item.value = itemArray[1];
myArray.push(item);
}
for (var x = 0; x < myArray.length; x++)
console.log(myArray[x].key + ' is ' + myArray[x].value);
});
</script>
</body>
</html>
Undeclared form_data
не является объектом, поэтому у него не может быть свойств, поэтому form_data[i] = ...
будет неудачным. Запустите этот сценарий в приличном браузере, и консоль должна показать вам сообщение, равное тому, что я только что сказал.
edit - нет, не выдаст, потому что синтаксис поддельного литерала объекта сработает первым, как упоминает Kobi. Обе проблемы должны быть исправлены.
JavaScript не поддерживает следующую нотацию:
var my_item = {value[0] : value[1]};
Попробуйте вместо этого:
var my_item = {};
my_item[value[0]] = value[1];
Это создаст массив, в котором каждый элемент имеет ключ и значение, например:
[{name: jason}, {age: 23}, {location: pacific}] //array of single keys
Использование хеша, вероятно, сделает больше сцены в вашем случае, поэтому вы можете вызвать form_data ['age']
, и вам не придется смотреть в массив:
initialize form_data
к объекту:
form_data = {};
Добавить ключи непосредственно к нему:
form_data[value[0]] = value[1];
Итак, результат:
{name: jason, age: 23, location: pacific} //associative array with properties