У меня есть кнопка-переключатель по умолчанию value = "1" = on offer. Теперь, с моим jQuery, я могу изменить это значение на 0 по запросу. Но после этого, если я хочу изменить его обратно на значение 1, оно заблокировано. с value = "0". Как я могу сделать, чтобы это вернулось к моему значению по умолчанию?
function change() {
var elem = document.getElementById("home-header_on_offer");
if (elem.value == "1")
elem.value = "0";
else if (elem.value = "0")
elem.value = "1";
}<label class = "label" style = "right: -20px;position: relative">On offer</label>
<label class = "switchCr">
<input onclick = "change()" type = "checkbox" name = "custom7" value = "1" id = "home-header_on_offer"
checked = "checked">
<span class = "sliderCr round select" id = "my-career-search-header" style = "border-radius: 0px;top: -52px;width: 255px;height: 33px;border-width: 1px;border-color: #bbb;position: relative;box-shadow: none;"onclick = "myFunction2()"></span>
</label>спасибо за ваш ответ :) === сработало для меня :)



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


У вас тип в вашем else состоянии. Также, если вы хотите сравнить с 0 или «0», лучше используйте строгое сравнение ===:
if (elem.value === "1") {
elem.value = "0";
} else if (elem.value === "0") {
elem.value = "1";
}
В вашей части else if это будет == вместо =.
== для сравнения две стороны=== для плаща со строгим типом= для присвоения.function change() {
var elem = document.getElementById("home-header_on_offer");
if (elem.value == '1') elem.value = '0';
else if (elem.value == '0') elem.value = '1';
console.info(elem.value)
}<label class = "label">On offer</label>
<label class = "switchCr ">
<input onclick = "change()" type = "checkbox" name = "custom7" value = "1" id = "home-header_on_offer" checked = "checked">
<span class = "sliderCr round select" id = "my-career-search-header"></span>
</label>Это просто:
function change() {
var elem = document.getElementById("home-header_on_offer");
if (elem.value == "1") {
elem.value = "0";
alert(elem.value);
} else {
elem.value = "1";
alert(elem.value);
}
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label class = "label" style = "right: -20px;position: relative">On offer</label>
<label class = "switchCr">
<br>
<input onclick = "change()" type = "checkbox" name = "custom7" value = "1" id = "home-header_on_offer"
checked = "checked">
<span class = "sliderCr round select" id = "my-career-search-header" style = "border-radius: 0px;top: -52px;width: 255px;height: 33px;border-width: 1px;border-color: #bbb;position: relative;box-shadow: none;"onclick = "myFunction2()"></span>
</label>Проблема в том, что = вместо == (= против ===)
Решения Альтернативный для переключения
function change() {
var elem = document.getElementById("home-header_on_offer");
elem.value = 1 - elem.value;
console.info(elem.value)
}<label class = "label" style = "">On offer</label>
<input onclick = "change()" type = "checkbox" name = "custom7" value = "1" id = "home-header_on_offer" checked = "checked">ИЛИ Использование свойства checked с unary plus
function change() {
var elem = document.getElementById("home-header_on_offer")
console.info(+elem.checked)
}<label class = "label" style = "">On offer</label>
<input onclick = "change()" type = "checkbox" name = "custom7" value = "1" id = "home-header_on_offer" checked = "checked">
else if (elem.value = "0")всегда будет правдой. Вам нужно использовать==или===для проверки равенства, а не=. Также обратите внимание, что изменение значения элемента управления во время выполнения — плохая идея. Весь смысл флажка в том, что он отправляет значение, когда он отмечен, иначе он не отправляет никакого значения. Поэтому вам просто нужно, чтобы ваша логика на стороне сервера работала с отправленным значением или нулевым значением.