2015-07-05 6 views
-2

Использование: VS 2013, ASP.NET (VB) Webforms.Мобильная кнопка меню 2 щелчка для переключения меню

Обновление веб-сайта WebForms с .NET 2.0 до .NET 4.5 и добавление удобства для мобильных устройств для поддержки Google.

Создано кнопку в правом верхнем углу, как это:

<a href="#" onclick="toggleMenuDiv();"> 
    <img class="headerimg-r" src="/images/MenuBtn6464.png" /> 
</a> 

Javascript выглядит следующим образом:

function toggleMenuDiv() { 
    var menu = document.getElementById('menu'); 
    if (menu.style.display == 'none') { 
     menu.style.display = 'block'; 
    } 
    else { 
     menu.style.display = 'none'; 
    } 
} 

элемент с "меню" ид выглядит следующим образом:

<div class="dropdownmenu" id="menu"> 

Однако, чтобы отбросить меню, мне нужно коснуться дважды, а не один раз. Все ссылки на меню работают правильно без нескольких касаний.

Не стесняйтесь видеть это сами. Удалите http://www.pedfast.com с мобильного устройства и попробуйте.

Я знаю, что мне не хватает чего-то простого; может кто-нибудь указать мне в правильном направлении?

Спасибо!

+0

Вы можете использовать JQuery кнопкой мыши и slideToggle вместо этого. –

ответ

2

Возможно, menu.style.display не соответствует none в начале?

Итак, в первый раз, когда вы нажмете меню, вы установите display на none. И второй раз display - none, и вот почему он работает при втором нажатии!

Я думаю, вам нужно проверить, не display не равно block, а затем установить его на block!

Попробуйте это:

if (menu.style.display != 'block') { 
    menu.style.display = 'block'; 
} 
else { 
    menu.style.display = 'none'; 
} 

EDIT Просто посмотрите на @Billy Первис ответ. Вы также можете добавить .toggle() вместо .show(), если вы хотите вернуть hide в меню.

+0

Спасибо! Этот код работал отлично! –

-1

Здесь я создал jsFiddle, показывающий использование jQuery. Он чище и понятнее, и он полагается только на один клик. Я не мог воссоздать ваш без кода, поэтому я создаю пример, чтобы показать логику, в вашем примере должно быть легко использовать логику.

$("button").click(function(){ 
    $(".menu").show(); 
}); 

После нажатия кнопки (или тега) отображается меню.Ввод этого CSS в меню скрывает его, пока он не нужен

.menu { 
    display: none; 
} 

http://jsfiddle.net/yhf3dfcs/

+0

Это было бы здорово, однако я жестко сказал, что подавляющее большинство голосов связано с тем, что OP не просит другого решения, и в этом случае нет необходимости включать всю библиотеку, такую ​​как jquery, для решения этой проблемы. (Источник OP не использует jquery или добавил этот тег) – ecarrizo

+0

Конечно, но с точки зрения чистоты кода не было бы лучше использовать менее реальный письменный код. Я бы предположил, что OP будет использовать jQuery в какой-то момент. Это справедливо для комментариев, однако, я чувствую, что downvotes не нужны. Путь OP просто кажется более трудным и беспощадным, чем это могло бы быть. Увы, выбор ОП. Спасибо за объяснение. –

+0

CSS для меню находится в таблице стилей как отображение: none; –

1

Проблема заключается в том, что DIV с идентификатором атрибута «меню» === не имеет значение display: none; как атрибут стиля, так что в основном в первый клик код присваивание элемента, значение, а затем, во второй кнопке мыши значения display: block

извлеченного из связанной страницы:

<div class="dropdownmenu" id="menu"> 

Это должно быть

<div class="dropdownmenu" id="menu" style="display: none;"> 
+0

Таблица стилей в отдельном файле CSS по умолчанию отображается: none; –