Столкнулась с проблемой обновления блока, в котором отображаю сообщения
Вызываю функцию и передаю в нее id, но блок не обновляется по заданному времени
<a href"#" onclick="msgUpd('<?=$conv['id']?>');" >
<script>
var id;
function msgUpd(id) {
$(".comments-list").load("/getpm/"+id);
usrto = $("#usrto").val();
cid = $("#cid").val();
$("#user_to").val(usrto);
$("#conversation_id").val(cid);
}
setInterval(msgUpd, 3000);
</script>
Подскажите, пожалуйста, как это решить?
Вот тут вы вызываете msgUpd с аргументом '<?=$conv['id']?>':
onclick="msgUpd('<?=$conv['id']?>');"
Могу предположить, что этот вызов работает.
А в setInterval вы передаете вашу функцию msgUpd без аргументов:
setInterval(msgUpd, 3000);
И setInterval ее, соответственно, вызывает без аргументов.
Такой вариант из комментариев не подойдет:
setInterval(msgUpd(id), 3000);
Ибо тогда вы вызовете msgUpd единожды с аргументом id. Функция вернет undefined, который вы и передадите в качестве первого аргумента для setInterval.
Если вам нужно отправить на перезагрузку последнее значение id, поправьте ваш код:
var lastId;
function msgUpd(id) {
$(".comments-list").load("/getpm/"+id);
usrto = $("#usrto").val();
cid = $("#cid").val();
$("#user_to").val(usrto);
$("#conversation_id").val(cid);
lastId = id;
}
setInterval(function() { msgUpd(lastId) }, 3000);
Внутри функции msgUpd сохраняем переданный аргумент id в переменную lastId. А для setInterval передаем аргумент function() { msgUpd(lastId) } - функция, внутри которой мы вызываем msgUpd с аргументом, в котором уже есть сохраненный последний id.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей