#javascript #html #node.js #checkbox #socket.io
Вопрос:
Я пытаюсь внедрить кнопку «Нравится» на свой сайт для нескольких разных страниц, и я использую socket io, чтобы он обновлялся для каждого пользователя при нажатии кнопки «Нравится». У меня есть простая функция like()
, которая выдает liked
, которая затем увеличивает счетчик и отображается на странице. Однако проблема не в этом. Я решил сделать флажок, чтобы я мог что-то сделать, когда флажок не установлен. Для этого у меня тоже есть функция, которая работает. Я просто не могу что-то сделать, когда он снят. Это то, что я использую, чтобы проверить, установлен ли флажок:
if(document.getElementById('like').checked) {
like()
}
Это ничего не делает, когда он установлен. Я даже пытался просто заменить like()
на socket.emit('liked')
, но это тоже не сработало. Как правильно проверить, установлен ли флажок или нет? (Желательно без Jquery)
Html-файл:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<p id="likes">Likes: </p>
<input type="checkbox" id="like"></input>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
if(document.getElementById('like').checked) {
like()
}
function like(){
socket.emit('liked');
}
function un_like(){
socket.emit('unliked');
}
socket.on('buttonUpdate', function(data){
document.getElementById("likes").innerHTML = 'Likes: ' data;
});
</script>
</body>
</html>
Комментарии:
1. можете ли вы добавить немного HTML-кода?
Ответ №1:
добавить addEventListener
в флажок
var checkbox = document.querySelector("input[id=like]");
checkbox.addEventListener('change', function() {
if (this.checked) {
console.log("Checkbox is checked..");
} else {
console.log("Checkbox is not checked..");
}
});
<input type="checkbox" id="like">Checkbox</input>
Ответ №2:
Используйте onChange
для обработки этого. Дополнительное чтение
<input type="checkbox" id="like" onChange="clickHandler(this)"></input>
function clickHandler(checkbox) {
if(checkbox.checked) {
like()
}
}
Пример кода:
function clickHandler(checkbox) {
if(checkbox.checked) {
console.log('selected')
} else {
console.log('unselected')
}
}
select / unselect: <input type="checkbox" id="like" onChange="clickHandler(this)"></input>