我的onclick功能有问题
我的链接
<a id="reply" onclick="replyFunction({{$review->id}})"class="right-button">Reply</a>
功能:
function replyFunction(id){
$('#reply').closest('div').append( $('.replyform'));
$('.replyform').show();
$('.replyform').attr('action', "/reply/submit/" + id);
}
不知何故,这不起作用我
(index):155 Uncaught ReferenceError:未定义replyFunction 在HTMLAnchorElement.onclick
我已经包含了该文件,我觉得应该可行。
我要做的是将id传递给函数。基本上用户按下回复按钮onclick函数应该发送父ID并使用javascript我应该更改用户将用父ID填充动作的表单,以便我得到正确的路线(我正在使用laravel)。
P.S。如果有一种更容易的方法来做到这一点,我很想听到它。
答案 0 :(得分:3)
如果你正在使用jQuery,你应该在那里设置eventlistener。并且由于replyFunction是一个回调函数,它将获取一个事件作为参数而不是给定的值。
你应该
<div>
<a id="reply" data-reviewId="{{$review->id}}" class="right-button">Reply</a>
</div>
和
(function ($) {
$('#reply').on('click',function(e){
e.preventDefault(); // do not follow the link or move to top
var replyId = $(this).attr('data-reviewId');
$(this).closest('div').append( $('.replyform'));
$('.replyform')
.show()
.attr('action', "/reply/submit/" + replyId);
})
})(jQuery);
但是我想这不是你打算做的。我更新了codepen。
如果要添加表单并动态更改其操作,则应克隆虚拟对象并将其添加到所需位置(如果页面上有多个表单)。如果只有一个表单,您可以给它一个id并通过id更改属性。
答案 1 :(得分:0)
你只能在剧本方面这样做:
var reply = document.getElementById("reply"); // $("#reply")
var review = document.getElementById("review"); // $("#reply")
然后引用你的函数onclick
reply.onclick = () => { replyFunction(review); };