Javascript onclick函数未定义

时间:2018-01-31 08:41:34

标签: javascript jquery laravel

我的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。如果有一种更容易的方法来做到这一点,我很想听到它。

2 个答案:

答案 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); };