Привет, это моя функция
function open() {
document.getElementById("main").style.marginLeft = "20%";
document.getElementById("mySidebar").style.width = "20%";
document.getElementById("mySidebar").style.display = "block";
document.getElementById("openNav").style.display = 'inline-block';
}
function close() {
document.getElementById("main").style.marginLeft = "0%";
document.getElementById("mySidebar").style.display = "none";
document.getElementById("openNav").style.display = "inline-block";
}
function Test() {
var item = document.getElementById("main").style.marginLeft = "";
if (item = "0%")
{
w3_open()
item = document.getElementById("main").style.marginLeft = "20%";
} else if (item = "20%")
{
w3_close()
}
}
Первая часть работает отлично, но после второго нажатия ничего не происходит.
ИДК, что не так, может кто-то какие-то предложения?
///ОБНОВИТЬ
После нажатия на это:
<button id = "openNav" class = "w3-button w3-teal w3-xlarge" onclick = "Test()">☰</button>
Я могу открыть боковую панель, но после повторного нажатия я не могу ее закрыть. :/
@Николай готово, я забыл показать свою кнопку
в своем if
-утверждении вы делаете присваивание, а не сравнение. Должно быть, если (item == "0%").
@zelite я изменил это, но не работает :/
вы удалили = ""; из первой строки функции Test()? Смотрите мой ответ ниже.
@pzutils да, я изменился, и ничего не произошло.
надеюсь это работает
Если это не так, пожалуйста, дайте мне знать.
Во-первых, почему вы пишете это. Поскольку они одинаковы как в функции открытия, так и в функции закрытия?
Id("openNav").style.display='inline-block';
В
function close() and open()
попробуйте это с примечанием выше.
function open() {
document.getElementById("main").style.marginLeft = "20%";
document.getElementById("mySidebar").style.width = "20%";
document.getElementById("mySidebar").style.display = "block";
document.getElementById("openNav").style.display = 'inline-block'; }
function close() {
document.getElementById("main").style.marginLeft = "0";
document.getElementById("mySidebar").style.width = "0 !important";
document.getElementById("openNav").style.display = "inline-block"; }
function Test() {
var item=document.getElementById("main").style.marginLeft ;
if (item == "0") {
w3_open() item = document.getElementById("main").style.marginLeft ;
} else if (item == "20%") { w3_close() }
это даже не открывается..
Извините.проверьте сейчас
Я с мобильного телефона. Можете ли вы прислать мне снимок экрана или картинку.
оператор if else все еще перепутался - вы должны оценивать item == "0%", а не присваивать item = "0%"
Я просто копирую код. Что-то пошло не так при отправке. Проверьте
Пожалуйста, не голосуйте против, сначала проверьте свою проблему
не работает, не знаю почему.. если я буду знать, я не буду спрашивать.
Можете ли вы поделиться своим кодом и картинкой где-нибудь, чтобы увидеть, что вы сделали, чтобы я мог вам помочь
Да, мы можем пойти в чат. Скажи мне, если это возможно
Давай сделаем это. Я на
item
никогда не будет равно "0%"
, потому что вы специально устанавливаете его на ""
здесь:
var item = document.getElementById("main").style.marginLeft = "";
Вот почему он всегда переходит к оператору else. Измените эту строку на var item = document.getElementById("main").style.marginLeft
Также только что заметил, что ваш оператор if else перепутался - вам нужно использовать ==
вместо =
. Ваш оператор if в настоящее время присваивает item = "0%"
, но вы хотите, чтобы он вместо этого оценивал if item == "0%"
. Так что на самом деле это еще одна причина, по которой он всегда открывается, потому что присвоение значения внутри оператора if в основном всегда будет оцениваться как true. Попробуйте исправить эти проблемы и сообщите мне, работает ли код.
Еще одно замечание - w3_open()
и w3_close()
должны быть просто open()
и close()
Здравствуйте, это не работает. Просто открывается и не закрывается :/...
позвольте мне увидеть ваш исправленный код - он работает для меня
main также должно иметь существующее значение по умолчанию для margin-left, как указано в ответе anurag-dhamala ниже
Это не работает!
Вам нужно установить значение marginLeft по умолчанию для элемента с идентификатором «main» на 0% в таблице стилей. Затем измените свои функции, как показано ниже:
function open() {
document.getElementById("main").style.marginLeft = "20%";
document.getElementById("mySidebar").style.width = "20%";
document.getElementById("mySidebar").style.display = "block";
}
function close() {
document.getElementById("main").style.marginLeft = "0%";
document.getElementById("mySidebar").style.display = "none";
}
function Test() {
var item = document.getElementById("main").style.marginLeft;
if (item == "0%"){
open()
} else if (item == "20%"){
close()
}
}
операторы if else здесь все еще перепутались - вам нужно оценивать item == "0%", а не назначать item = "0%"
Ой! Просто скопируйте ответ из вопроса. И забыл его изменить. Виноват
@anurag-dhamala это не работает
Ответ отредактирован. Проверь это. Забыли изменить имена функций. У вас разные имена при определении и вызове.
@anurag-dhamala не работает :O
Здесь возникает ряд проблем, включая присвоение значений, когда они должны выполнять сравнения (отмечено в нескольких комментариях и других ответах).
Даже если синтаксис исправлен, я подозреваю, что функция никогда не будет работать, потому что значение marginLeft
никогда не устанавливалось с самого начала, а это означает, что ни open()
, ни close()
никогда не будут вызываться, поскольку они вызываются только в том случае, если найдено определенное значение.
В методе Test()
все можно упростить с помощью одной оценки. Вот обновленная версия:
function open() {
document.getElementById("main").style.marginLeft = "20%"
document.getElementById("mySidebar").style.width = "20%"
document.getElementById("mySidebar").style.display = "block"
document.getElementById("openNav").style.display = "inline-block"
}
function close() {
document.getElementById("main").style.marginLeft = "0%"
document.getElementById("mySidebar").style.display = "none"
document.getElementById("openNav").style.display = "inline-block"
}
function Test() {
var item = document.getElementById("main").style.marginLeft
// simplified condition
if (item == "20%") close()
else open()
}
Это ответ на мой вопрос! Спасибо чувак!
Что вы ожидаете, когда вы щелкнете (щелкните что?) во второй раз? Пожалуйста, предоставьте полный (самостоятельный) пример, чтобы воспроизвести проблему.