Есть текстовое поле на странице, нужно его заполнять в формате:
[{
id: "1",
name: "Ivan",
age: 25,
friends: 5
},
{
id: "2",
name: "Maria",
age: 23,
friends: 10
},
{
id: "3",
name: "Alex",
age: 47,
friends: 3
},
{
id: "4",
name: "James",
age: 34,
friends: 12
}];
Все это переменная data. И этими значениями мы должны заполнить динамически создающуюся таблицу. Если переменную data просто прописывать в коде, к примеру
var data = [{...},{...},{...}];
то все работает хорошо. Но вот как сделать, чтобы по кнопке, когда уже значения введены в поле, все закидывалось в таблицу?
Допустим, вы получили строку из поля и записали ее в переменную strArea
var strArea = '[{id:"1",name:"Ivan",age:25,friends:5},{id:"2",name:"Maria",age:23,friends:10},{id:"3",name:"Alex",age:47,friends:3},{id:"4",name:"James",age:34,friends:12}];'
Получить из этой строки data, можно, воспользовавшись eval:
var data = eval(strArea);
Парсим с помощью JSON.parse (предварительно сделав "правильный" json) и в цикле загоняем в таблицу:
var data = '[{id:"1",name:"Ivan",age:25,friends:5},{id:"2",name:"Maria",age:23,friends:10},{id:"3",name:"Alex",age:47,friends:3},{id:"4",name:"James",age:34,friends:12}]';
$('body').on('click', 'button', function() {
var realJSON = data.replace(/([\w]+):/g, '"$1":');
var dataObj = JSON.parse(realJSON);
for(var i = 0; i < dataObj.length; i++) {
var row = '<tr><td>' + dataObj[i].id + '</td><td>' + dataObj[i].name + '</td><td>' + dataObj[i].age + '</td><td>' + dataObj[i].friends + '</td></tr>';
$('table').append(row);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button>Жми</button>
<table border="1" rules="all"></table>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей