我在我的网站上创建了一个功能,即我们可以为帖子添加评论,发布的用户可以编辑他发布的评论。但不幸的是,这不起作用。 这是我打印这些评论的代码:
var offers = <? php echo $offers = PostOffer::GetOffers($_GET["id"]); ?> ; <? php $decodedOffers = json_decode($offers); ?> <? php
for ($i = 0; $i < count($decodedOffers); $i++) { ?>
var date = offers[ <? php echo $i; ?> ].Date.split(" ");
document.write('<div class="row-fluid offer">' +
'<div class="span2">' +
'<img class="profile_picture" src="' + offers[ <? php echo $i; ?> ].Picture_Path + '" />' +
'</div>' +
'<div class="span10">' +
'<div class="row-fluid">' +
'<div class="username">' +
'<p style="font-weight: bold;">' + offers[ <? php echo $i; ?> ].Name + '</p>' +
'</div>' +
'</div>' +
'<div class="row-fluid">' +
'<div class="content">' +
'<p class="content">' + offers[ <? php echo $i; ?> ].Text + '</p>' +
'<div class="btn-group pull-right">');
if (posted_by == <? php echo User::GetUserID($_SESSION["username"]); ?> && offers[ <? php echo $i; ?> ].User_ID != <? php echo User::GetUserID($_SESSION["username"]); ?> ) {
if (offers[ <? php echo $i; ?> ].Accepted == 0) {
document.write('<button class="accept_offer btn btn-inverse hide" data-offer-id="' + offers[ <? php echo $i; ?> ].Offer_ID + '"><i class="icon-white icon-check"></i> Accept Offer</button>');
} else {
document.write('<button class="accept_offer btn btn-inverse" data-offer-id="' + offers[ <? php echo $i; ?> ].Offer_ID + '"><i class="icon-white icon-remove"></i> Unaccept Offer</button>');
}
}
if (posted_by == <? php echo User::GetUserID($_SESSION["username"]); ?> && offers[ <? php echo $i; ?> ].User_ID != <? php echo User::GetUserID($_SESSION["username"]); ?> ) { <? php
$userId = $decodedOffers[$i] - > {
"User_ID"
};
$withUserId = User::GetUserID($_SESSION["username"]);
$conversationId = Conversation::CheckIfConversationExists($userId, $withUserId);
if ($conversationId != null) { ?>
document.write('<button class="btn btn-inverse" onclick="window.location.href=\'conversation.php?id=<?php echo $conversationId; ?>\'"><i class="icon-white icon-envelope"></i> Contact Person</button> '); <? php
}
elseif($conversationId == null) { ?>
document.write('<button class="btn btn-inverse" href="" class="no_link" onclick="showContactPersonModal(' + offers[ <? php echo $i; ?> ].User_ID + ')">Contact this person</a> '); <? php
} ?>
}
document.write('</div>');
document.write('<textarea class="hide span12 edited_content">' + offers[ <? php echo $i; ?> ].Text + '</textarea>'); < /script>
<script>
document.write('<button type="button" class="hide btn btn-primary btn-small" id="save_edits" onclick=\'editPostOffer(<?php echo $_GET["id"]; ?>,' + offers[<?php echo $i; ?>].Offer_ID + ',' + document.getElementsByClassName("edited_content")[<?php echo $i; ?>] + ');\'>Save Edits</button > & nbsp;
'+
' < button type = "button"
class = "hide btn btn-primary btn-small cancel_edits" > Cancel Edits < /button>' +
'</div > ' +
' < /div>' +
'<div class="row-fluid">' +
'<div class="date">' +
'<p class="pull-right"><strong><span class="muted">Offered on: </span > < /strong>' + date[0] + '</p > ' +
' < /div>');
if(offers[<?php echo $i; ?>].Username == "<?php echo $_SESSION["username"]; ?>") {
document.write('<div class="controls pull-right">' +
'<a href="" class="no_link edit_offer">Edit</a > & nbsp;
' +
' < a href = ""
class = "no_link"
onclick = "showDeleteOfferModal(' + offers[<?php echo $i; ?>].Offer_ID + ');" > Delete < /a> | ' +
'</div > ');
}
document.write(' < /div>' +
'</div > ' +
' < /div>' +
'<hr / > ');
<?php } ?>
这是呈现的代码(我尽可能地保持简单):
<div class="row-fluid offer">
<div class="span2"><img class="profile_picture" src="admin/profile_pictures/mas.png"></div>
<div class="span10">
<div class="row-fluid">
<div class="username">
<p style="font-weight: bold;">Mohammad Areeb Siddiqui</p>
</div>
</div>
<div class="row-fluid">
<div class="content">
<p class="content" style="display: block;">rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo </p>
<div class="btn-group pull-right"></div>
<textarea class="hide span12 edited_content" style="display: none;">rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo rajjo </textarea>
<script>
document.write('<button type="button" class="hide btn btn-primary btn-small" id="save_edits" onclick=\'editPostOffer(20,' + offers[0].Offer_ID + ',' + document.getElementsByClassName("edited_content")[0] + ');\'>Save Edits</button> '+
'<button type="button" class="hide btn btn-primary btn-small cancel_edits">Cancel Edits</button>' +
'</div>' +
'</div>' +
'<div class="row-fluid">' +
'<div class="date">' +
'<p class="pull-right"><strong><span class="muted">Offered on: </span></strong>' + date[0] + '</p>' +
'</div>');
if(offers[0].Username == "mas") {
document.write('<div class="controls pull-right">' +
'<a href="" class="no_link edit_offer">Edit</a> ' +
'<a href="" class="no_link" onclick="showDeleteOfferModal(' + offers[0].Offer_ID + ');">Delete</a> | ' +
'</div>');
}
document.write('</div>' +
'</div>' +
'</div>' +
'<hr />');
</script><button type="button" class="hide btn btn-primary btn-small" id="save_edits" onclick="editPostOffer(20,45,[object HTMLTextAreaElement]);" style="display: none;">Save Edits</button> <button type="button" class="hide btn btn-primary btn-small cancel_edits" style="display: none;">Cancel Edits</button>
</div>
</div>
<div class="row-fluid">
<div class="date">
<p class="pull-right"><strong><span class="muted">Offered on: </span></strong>2014-01-03</p>
</div>
<div class="controls pull-right"><a href="" class="no_link edit_offer">Edit</a> <a href="" class="no_link" onclick="showDeleteOfferModal(45);">Delete</a> | </div>
</div>
</div>
</div>
这是JS的主要内容:
function editPostOffer(postId, offer_id, edited_content) {
$.post("admin/post_offer/edit_post_offer.php", {id: offer_id, text: edited_content.value}, function(data) {
if(data.status == "success") {
window.location.href = "post.php?id="+postId;
}
}, 'json');
}
现在该代码的作用是它向我们显示了带有注释文本的段落。然后在底部有一个编辑链接。当我们点击该链接时,该段落将被隐藏,并显示一个textarea,其中已包含注释的文本。然后在显示textarea时同时显示两个按钮。这些是保存编辑和取消编辑。当我们点击保存编辑按钮时,它会调用一个名为editPostOffer
的函数,这个函数接受两个参数,即注释的id和edited_content。
现在的问题是,正如您在保存编辑的onclick上看到的那样,我已经完成了这个:
onclick=\'editPostOffer(<?php echo $_GET["id"]; ?>,' + offers[<?php echo $i; ?>].Offer_ID + ',' + document.getElementsByClassName("edited_content")[<?php echo $i; ?>] + ');\'
呈现为:
onclick=\'editPostOffer("20","' + offers[0].Offer_ID + '",' + document.getElementsByClassName("edited_content")[0] + ');\'
当函数editPostOffer
被调用时,它应该得到它的值:
editPostOffer("20", document.getElementsByClassName("edited_content")[0]);
但它是这样的:
editPostOffer("20", undefined);
这就是控制台显示此错误的原因:
Uncaught TypeError: Cannot read property 'value' of undefined
当我在控制台中手动输入时:
document.getElementsByClassName("edited_content")[0]
我得到了带有评论值的textarea。
任何人都可以告诉我为什么控制台显示错误“未定义”,即使存在具有相同值的对象?
答案 0 :(得分:0)
引号错误。
删除第一个和最后一个的转义。 (“edited_content”)[0]之后还有一个缺少的引号。
呈现的文字应为: onclick ='editPostOffer(“20”,“'+ offers [0] .Offer_ID +'”,' + document.getElementsByClassName(“edited_content”)[0]'+'); \'