#javascript #html
#язык JavaScript #HTML
Вопрос:
У меня есть такой же тумблер, как этот:
И Active
метка взята из базы данных. Я хочу, чтобы эта кнопка была изменена на true
, если она активна.
Это то, что я пробовал до сих пор:
HTML
lt;input onclick='toggleStatus(this)' type='checkbox' id='{{ db.id }}' name='{{ db.id }}'gt; lt;label id='user-status-toggle' for='{{ db.id }}'gt;{{ db.status }}lt;/labelgt;
язык JavaScript
function toggleStatus(radio) { var toggle = document.getElementById('user-status-toggle'); if (radio.checked) { toggle.textContent = "Active"; radio.checked = true; } else { toggle.textContent = "Inactive"; radio.checked = false; } }
Это работает, но только когда я взаимодействую с кнопкой. Когда я впервые посещаю страницу, она всегда выключена, даже если статус активен. Обратите внимание, что у меня может быть несколько кнопок, и их статус может варьироваться от Active
и Inactive
до .
Так как же мне это сделать?
Комментарии:
1. Какой язык/библиотеку вы используете в HTML?
2. Я использую PHP, но я избегал его, потому что у него сложный синтаксис, и я выбрал в качестве примера что-то более простое.
3. Скорее всего, вам потребуется отобразить проверенный атрибут в php, а не полагаться для этого на JS
Ответ №1:
Я исправил это, проверив, если db.status === "Active"
первый с помощью оператора if-else в PHP:
if (db.status === "Active") { return lt;input checked onClick=toggleStatus(this)'gt; } else { return lt;input onClick=toggleStatus(this)'gt; }
Ответ №2:
Вы можете установить начальный checked
на своем lt;input /gt;
просто добавьте checked
атрибут.
например,
// if this one is what you want initial checked.. lt;input checked onclick='toggleStatus(this)' type='checkbox' id='{{ db.id }}' name='{{ db.id }}'gt; lt;label for='{{ db.id }}'gt;{{ db.status }}lt;/labelgt; lt;input onclick='toggleStatus(this)' type='checkbox' id='{{ db.id }}' name='{{ db.id }}'gt; lt;label for='{{ db.id }}'gt;{{ db.status }}lt;/labelgt;
Я не очень хорошо разбираюсь в PHP, но, думаю, это было бы неплохо..
// if this one is what you want initial checked.. lt;input checked='{{ db.textContent === "Active" }}' onclick='toggleStatus(this)' type='checkbox' id='{{ db.id }}' name='{{ db.id }}'gt; lt;label for='{{ db.id }}'gt;{{ db.status }}lt;/labelgt;
Комментарии:
1. Это будет проверено, даже если моя метка
textContent
Inactive
2. @Klein-_0 Я отредактировал ответ.
3. Это не сработало, но ты подал мне хорошую идею, и я ее исправил. Я не знаю, насколько это надежно, но я отредактирую свой вопрос с исправлением.
4. @Klein-_0 Я исправил свой последний ответ,
'active'
=gt; gt;"active"
. не могли бы вы попробовать это еще раз?