2016-05-21 3 views
0

Я имею проблемы со свойством CSS> дисплей> На моей странице я скрыл 4 DIV элементов, используя дисплей = нет свойства сейчас, используя JavaScript Я хочу, чтобы отобразить каждое свойство отдельно I я могу скрыть эти элементы и могу сделать их отображаемыми по клику, но он никогда не отображается, как если бы он был либо встроенным, либо неправильным форматированием Я использовал множество значений для отображения, например: inline, block и т. д., но я все еще не может получить это право , если кто-то может помочь мне плохо оценить это код я использую:CSS свойство «Дисплей» не работает должным образом

<script type="text/javascript"> 
document.getElementById("a").style.display="none"; 
document.getElementById("b").style.display="none"; 
document.getElementById("c").style.display="none"; 
document.getElementById("d").style.display="none"; 
function myFunctionA() { 
document.getElementById("a").style.display="block"; 
document.getElementById("b").style.display="hidden"; 
document.getElementById("c").style.display="hidden"; 
document.getElementById("d").style.display="hidden"; 
} 
function myFunctionB() { 
document.getElementById("b").style.display="initial"; 
document.getElementById("a").style.display="hidden"; 
document.getElementById("c").style.display="hidden"; 
document.getElementById("d").style.display="hidden"; 
} 
function myFunctionC() { 
document.getElementById("c").style.display="initial"; 
document.getElementById("a").style.display="hidden"; 
document.getElementById("b").style.display="hidden"; 
document.getElementById("d").style.display="hidden"; 
} 
function myFunctionD() { 
document.getElementById("d").style.display="initial"; 
document.getElementById("a").style.display="hidden"; 
document.getElementById("b").style.display="hidden"; 
document.getElementById("c").style.display="hidden"; 
} 
</script> 

страница, на которой я вижу результат является:

http://theinformant.to/food-drink/

, если нажать на название, например, приготовление пищи, напитков, вы увидите, что я говорю о

+0

Пожалуйста, измените вопрос с более конкретными деталями того, что вы хотите. Вы сказали, что «он никогда не отображается так, как должен», но вы никогда не уточняете, как он должен отображаться. Когда я смотрю на страницу, она работает правильно. –

ответ

1

Это должно быть display='none' вместо display='hidden'.

+0

спасибо, что указал Я изменил его, но все еще не решил проблему. Проблема в том, что я не знаю, какое свойство я должен использовать, чтобы правильно отображать его при нажатии. Сейчас все отформатировано неправильно. – user2296604

+0

Также рассмотрите возможность использования блока вместо начального. – dejakob

4

Ваш код очень повторяющийся. Попробуйте сделать это СУХОЙ (не повторяйте себя). Все, что вам нужно это:

function myFunction(id){ 
 
    var elements = document.querySelectorAll('.element'); 
 
    for(var i=0; i<elements.length; i++){ 
 
    elements[i].style.display = elements[i].id == id ? 'block' : 'none'; 
 
    } 
 
}
.element{display: none;} #a{display: block;}
<button onclick="myFunction('a')">Show A</button> 
 
<button onclick="myFunction('b')">Show B</button> 
 
<button onclick="myFunction('c')">Show C</button> 
 
<button onclick="myFunction('d')">Show D</button> 
 

 
<div id="a" class="element">A</div> 
 
<div id="b" class="element">B</div> 
 
<div id="c" class="element">C</div> 
 
<div id="d" class="element">D</div>

+1

Thumbs up для упоминания DRY – dejakob

+0

Благодарим вас за ответ, но вы используете jquery, если не ошибаетесь. Используя ваш пример, я не решил проблему, посмотрите на страницу сейчас, и вы увидите ошибку. спасибо – user2296604

+0

есть способ, которым я могу это сделать, используя javascript – user2296604

0

Предложение. В исходном представлении я использую jQuery. Попробуйте использовать $('#domelementname') вместо document.getElementById("a"). Существует более повторяющийся код.

+0

Я не использую jquery Я использую javascript – user2296604

+0

правой кнопкой мыши и просматриваю страницу. Вы должны увидеть, что jquery указан на вашей странице. У тебя есть это. – Kurkula

+0

Пожалуйста, смотрите сейчас – user2296604

1

Возможно, вам нужно переключиться между display:hidden и display:block, как говорили другие. Рассмотрите возможность использования имен классов вместо непосредственного обновления стилей. Это сделает ваш код более управляемым в будущем. Кроме того, см. Ответ @ blex, так как у него есть хороший совет сделать код менее повторяющимся.

Вот пример использования классов вместо изменения стилей непосредственно:

/* Hide an element */ 
document.getElementById('a').className = 'hide'; 

/* Show an element */ 
document.getElementById('a').className = ''; 

Если вам нужно использовать более одного класса на элементы, попробуйте classList.add('hide') и classList.remove('hide') вместо этого.

Затем в CSS, вы могли бы использовать что-то вроде этого:

.hide { 
    display: none; 
} 
+0

Я использую код, предоставленный @blex, и у меня все еще есть такая же проблема. блок отображения работает, но не отображает результат, как он должен, но вместо этого он отображает его в одном столбце, пожалуйста, взгляните и сообщите мне, если у вас есть какие-либо идеи. Я попытался заменить блок другими вещами, но все равно получаю тот же результат. – user2296604

Смежные вопросы