请考虑以下字符串:
['2012-2','2012-3','2012-4','2013-1','2013-2','2013-3','2013-4','2014-1']
我从Web方法返回此字符串,我想循环使用此值,并编写以下代码:
var tr = '<tr><td>Title</td>';
$.each(arrPeriods, function (index, value) {
tr += '<td>' + value + '</td>';
});
tr += '</tr>';
我收到此错误:
JavaScript运行时错误:无效的'in'操作数:预期对象
我认为问题是我应该将字符串转换为数组,但是我不知道该怎么做。请帮助我解决我的问题。
答案 0 :(得分:1)
在将字符串转换为数组之后,必须使用jQuery方法.append()
来添加td
。
注意:我建议尽可能从后端返回一个数组,这样会更有效。该解决方案只是暂时的解决方案
var arrPeriods = "['2012-2', '2012-3', '2012-4', '2013-1', '2013-2', '2013-3', '2013-4', '2014-1']";
var myArray = arrPeriods.replace(/\[|\]|'/g, '').split(',');
var tr = $('<tr><td>Title</td></tr>');
$.each(myArray, function(index, value) {
tr.append('<td>' + value + '</td>');
});
$('table').append(tr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border=1></table>
答案 1 :(得分:1)
您必须更换所有
"'"
至
"\""
然后,您可以使用JSON.parse()将字符串转换为数组。就是这样:
var answer = "['2012-2','2012-3','2012-4','2013-1','2013-2','2013-3','2013-4','2014-1']";
answer = answer.split("'").join("\"");
var arrPeriods = JSON.parse(answer);
var tr = $('<tr><td>Title</td></tr>');
$.each(arrPeriods, function(index, value) {
tr.append('<td>' + value + '</td>');
});
$('table').append(tr);
答案 2 :(得分:-1)
查看评论。
var arrPeriods = "['2012-2', '2012-3', '2012-4', '2013-1', '2013-2', '2013-3', '2013-4', '2014-1']";
arrPeriods = arrPeriods.replace(/'/g, '"'); // Clean the string into an acceptable JSON string
arrPeriods = JSON.parse(arrPeriods); // Parse the JSON string
var $tr = $('<tr><td>Title</td></tr>'); // Create the row
var $table = $('<table></table>')
.append($tr);
// No need to use jQuery's .each
arrPeriods.forEach(function (date) {
$tr.append('<td>' + date + '</td>');
});
$('body').append($table);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>