2016-12-26 3 views
-1

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

Я попробовал цикл:

function display(x) { 

    for (i=0; i<content.length; i++){ 
     content[i].style.display = 'none'; 
    } 

    if(x = content[i]){ 
     x.style.display = 'inline'; 
    } 
} 

Это ничего не делать.

Я попытался вставить инструкцию if внутри цикла, но все это стало видимым.

Я связал jsfiddle ниже.

Пожалуйста, не отвечайте на вопросы jQuery, поскольку я пытаюсь сначала изучить чистый javascript.

Заранее благодарен.
https://jsfiddle.net/ethacker/rp59g9cf/

+0

Это потому, что 'i' will = to' content.length', в вашем 'for()' 'i' будет каждый раз каждый раз, когда он запускается так в конце вашего цикла он будет нацелен на последний элемент массива 'content'. Постарайтесь разместить свое условие if внутри цикла for? – NewToJS

+0

Также не знаете, почему вы нацеливаете каждую кнопку '['] так, как вы. Почему бы не запустить их в цикле 'for()' и использовать 'i' для установки вызова вызова? Пример 'buttons [i] .addEventListener (« click », function() {display (content [i])};' поскольку индекс кнопки равен индексу 'content []', который вы хотите передать. – NewToJS

ответ

1

Вы не положить if внутри цикла. Поэтому он будет проверять только последнее значение i. Кроме того, равными должны быть ==. Вы должны сделать это так:

function display(x) { 

    for (i=0; i<content.length; i++){ 
     if(x == content[i]){ 
      x.style.display = 'inline'; 
     } else { 
      content[i].style.display = 'none'; 
     } 
    } 

} 
+0

Часть причины, по которой он не работает, заключается в том, что он имеет 'if (x = content [i])', который здесь не работает. Должен быть 'if (x === content [i])'. EDIT: Просто видел, что вы уже это сделали! –

+0

@SHBelsky да, я исправил это –

+0

Я только заметил, вы можете игнорировать мои предлагаемые изменения. :) –

0

увидеть это fiddle example код, который я слегка измененный код

var currDisplayElm; 
//function 
function display(content) { 

    if(currDisplayElm) 
     currDisplayElm.style.display = 'none'; 

    currDisplayElm = content; 
    content.style.display = 'inline'; 
} 
0

Как я понимаю. Ithink Если вы вызываете функцию нажатием кнопки, то последовательно устанавливайте div Id, и вы должны передать div div, который вы хотите отобразить. И имя div должно быть таким же, как вы можете скрыть другой div. Надеюсь, вы понимаете ..

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