Я хочу заменить 2 div несколько раз, но когда я заменяю его 1 раз и снова нажимаю кнопку, он показывает их оба.
Я пытаюсь описать это: когда я нажимаю кнопку «Нравится», он переключается на «Нравится» и «Счетчик» (также работает ajax), но когда я нажимаю кнопку «Не нравится» после этого, кнопка не заменяет ее, просто показывает мне оба их.
Код:
JS:
<script>
function likethis(likeid)
{
$('#dealid-' + likeid).html(function(i, val) {
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
},
type:"get",
url: 'deal/like/'+ likeid,
});
return +val+1;
});
$('#like-' + likeid).replaceWith($('#unlike-' + likeid).html());
}
</script>
<script>
function unlikethis(likeid)
{
$('#dealid-' + likeid).html(function(i, val) {
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
},
type:"get",
url: 'deal/like/'+ likeid,
});
return +val-1;
});
$('#unlike-' + likeid).replaceWith($('#like-' + likeid).html());
}
</script>
И вид (я использую laravel):
$if_null = App\Like::where('post_id','=', $deal->id)
-> where('user_id', '=', Auth::User()->id )
->first();
if (is_null($if_null)){
?>
<div id = "like-{{$deal->id}}">
<button onclick = "likethis(this.id)" name = "like" id = "{{$deal->id}}" class = "link m-r-10"><i class = "fa fa-heart"></i></button>
</div>
<div style = "display:none;" id = "unlike-{{$deal->id}}">
<button onclick = "unlikethis(this.id)" id = "{{$deal->id}}" class = "link m-r-10"><i class = "fa fa-heart text-danger"></i></button>
</div>
<?php }
else {?>
<div id = "unlike-{{$deal->id}}">
<button onclick = "unlikethis(this.id)" id = "{{$deal->id}}" class = "link m-r-10"><i class = "fa fa-heart text-danger"></i></button>
</div>
<div style = "display:none;" id = "like-{{$deal->id}}">
<button onclick = "likethis(this.id)" id = "{{$deal->id}}" class = "link m-r-10"><i class = "fa fa-heart"></i></button>
</div>
<?php }?>
<div id = "dealid-{{$deal->id}}"> {{$deal->like->count()}} </div>
Может кто знает почему? большое спасибо! (: PS: Извините за мой английский.
Та, что с дисплеем: на замену нет, с ней что-то не так?
Да :-) Идентификаторы должны быть уникальными - особенно если вы нацеливаетесь на них с помощью JS. Какой из них будет использовать JS, когда вы попытаетесь обратиться к #like-XX или #unlike-XX?
Хорошо, я попробую, спасибо ?
Хорошо, я меняю его на "посмотреть в сообщении", я редактирую его, но все равно не работает.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Хорошо, я попробую кое-что и получу то, что хочу, с этим кодом
if ($('#like-' + likeid).is(":visible")) {
$('#like-' + likeid).hide();
$('#unlike-' + likeid).show();
} else {
$('#unlike-' + likeid).hide();
$('#like-' + likeid).show();
}
Похоже, у вас есть 2 блока с одинаковым идентификатором? Один идет из теста
is_null(), а потом еще один ниже?