#javascript
Вопрос:
Есть ли другой способ скрыть div, когда я нажимаю на любой элемент в опции «Выбрать»? Я пытаюсь это скрыть:
<div id="video-borderr" class="video-borderr">ljlkj<iframe src="<?php echo $row['links'];?>" allowfullscreen="true" class="videorow"></iframe><div class="video-text"> <?php echo $row['titles'];?><br><?php echo $row['dates'];?> </div></div>
используйте приведенный ниже код, но он не работает. Я также попробовал другой код, который я видел, но ничего не работает.
<select id="state" multiple name="state" onchange="if(this.value != 0) { this.form.submit(); } hidehehehe(this);">
<script>
function hidehehehe() {
document.getElementById("video-borderr").style.display = 'none';
}
</script>
Спасибо!
Редактировать:
Спасибо за ответы, я думаю, что проблема в onchange=»if(this.value != 0) { this.form.submit(); который я использую для автоматической отправки опции выбора. Я попытался удалить его, и мое хидехехе работает. Не знаю, почему это происходит. Есть ли какой-нибудь подход, который я могу использовать?
Комментарии:
1. Извините, я скопировал старый код. Я уже редактирую свой пост, но все еще не работаю.
2. Я думаю, что единственная возможность заключается в том, что div с идентификатором
video-borderr
отсутствует в DOM, когда вы меняете значение select. В противном случае ваш код выглядит нормально.
Ответ №1:
Вероятно, вы получаете ошибки в консоли Cannot read property 'submit' of null
onchange="if(this.value != 0) { this.form.submit(); } hidehehehe(this);"
^^^^^
Потому что здесь this
есть ссылка select
на и не содержит form.submit
. Поскольку это становится ошибкой hidehehehe
, это никогда не называется.
Решение Вы можете решить эту проблему следующим образом
const form = document.getElementById("myForm");
const videoBorder = document.getElementById("video-borderr");
function onSelectChange(mySelect) {
if (mySelect.value != 0) {
form.submit();
}
videoBorder.style.display = 'none';
}
document.addEventListener("DOMContentLoaded", function(event) {
// If above code doesn't work then you should wrap all the code here,
// Since DOM is loaded and ready here.
});
<div id="video-borderr">This is a video border div</div>
<form id="myForm">
<select id="state" multiple name="state" onchange="onSelectChange(this)">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>
Комментарии:
1. Я предполагаю, что ему нужно отправить форму только тогда, когда выбранное значение !=0, а в противном случае скрыть выбранный элемент.
2. Я использую onchange=»if(this.value != 0) { this.form.submit(); } для автоматической отправки опции выбора после ее нажатия. Но это также влияет на мое хидехехехе, всякий раз, когда я удаляю этот код, хидехехе работает. Вы знаете, почему это происходит? Спасибо!
3. @Pathfinder Я обновил свой ответ, и я также рекомендую вам прочитать это
4. @Pathfinder Обновил решение с выполняемым фрагментом кода.
5. Я протестировал ваш код на новом html-коде, ничего не изменив, но все еще не работает на моем компьютере. Но спасибо за вашу помощь и усилия!
Ответ №2:
Вы должны создать параметры для выбранного вами, я не вижу ни одного варианта выше в вашем коде! потому что событие-это изменение, поэтому вам нужно иметь то, что вы измените
document.getElementById("state").addEventListener("change",()=>{
document.getElementById("video-borderr").style.display = "none";
})
<div id="video-borderr">
<h1>heading</h1>
</div>
<select id="state">
<option value="1">1</option>
<option value="2">2</option>
</select>
Комментарии:
1. У меня действительно есть опция в моем коде. И мой код выше, и ваш код для скрытия видео-borderrr работают, но проблема в том, что всякий раз, когда добавляется onchange=»если(это.значение != 0) { this.form.submit ();}, код просто больше не работает. Вы знаете, почему это происходит? Спасибо!