html - javascript if判断执行体中无法使用变量
var pagepath = window.location.pathname;
$.ajax({
type: 'post',
url: '{{ url_for("getposts") }}',
data: {'category':pagepath},
success: function (msg) {
$.each(msg, function (i, n) {
var row = $('#post-clone').clone();
var postid = n.id;
console.log(postid);
row.find('#post-name').text(n.name);
row.find('#post-author').text(n.author);
row.find('#post-ctime').text(n.ctime);
row.find('#post-mtime').text(n.mtime);
row.find('#post-small').text(n.small);
row.find('#postcontainer_p').text(n.container);
if ( n.author == '{{ g.user.username }}') {
$('a#post-getpost').attr('onclick', 'getpost(n.id)');
}
row.appendTo('#post-content').css('display', 'block')
})
}
});
javascript if判断执行体中无法使用变量
问题在于getpost(n.id),会报错.提示n未定义.
数据使用json传递到jquery.
回答
4
0
分享
全部回复 (4)
伊谢尔伦2017-04-11 12:51:464楼
作用域的问题。
$('a#post-getpost').attr('onclick', 'getpost(n.id)');
这段代码结果应该是在dom中
在这里函数名getpost、参数n都是全局的。
而在
$.each(msg, function (i, n) {
回调中n的作用域限制在回调函数里,并且此时全局没有n这个变量
所以n是undefined
可以改成
$('a#post-getpost').attr('onclick', 'getpost(' + n.id + ')');
回复
小皮2017-04-11 12:51:463楼
$('a#post-getpost').attr('onclick', 'getpost('+n.id+')');
试试
回复
怪我咯2017-04-11 12:51:462楼
'getpost('+n.id+')'
这样?
回复
ringa_lee2017-04-11 12:51:461楼
必须照楼上这样写啊
回复