2015-07-29 3 views
2

UPDATE:Скрытие элементов с JS

Я изменил мой сценарий к этому, и это работает. Путь проще, и он работает.

  function myFunction(valor) {    
       var elementos = document.getElementsByClassName("inner"); 
       var i; 
       for (i = 1; i < elementos.length+1; i++) { 
         document.getElementById("age"+i).style.visibility = "hidden"; 
       } 
       document.getElementById("age"+valor).style.visibility = "visible"; 
     } 

У меня есть этот скрипт:

function myFunction(valor) { 
    alert("Has seleccionado " + valor); 
    var elementos = document.getElementsByClassName("inner"); 
    //alert ("Tienes " + elementos.length + " elementos."); 
    var i; 
    for (i = 1; i < elementos.length + 1; i++) { 
     var sty = document.getElementById("age" + i); 
     //alert("age"+i); 
     if (getComputedStyle(sty).getPropertyValue("visibility") == "hidden") { 
      document.getElementById("age" + valor).style.visibility = "visible"; 
     } else { 
      document.getElementById("age" + i).style.visibility = "hidden"; 
     } 
    } 
} 

Это я контролирую с ползунком. То, что я делаю, скрывает или показывает некоторые divs в зависимости от того, что я выбираю из слайдера.

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

$(window).load(function() { 

    $.getJSON('http://xxxxx/xxxxx.json', function(data) { 
     var output = "<ul class='lista'><div class='outer'>"; 
     for (var i in data.lbclassic) { 
      output += "<div style='visibility:hidden;' class='inner'id=" + "age" + data.lbclassic[i].ageinweeks + ">" + "<p>" + data.lbclassic[i].ageinweeks + "--" + data.lbclassic[i].cumul + "--" + data.lbclassic[i].perhh + "--" + data.lbclassic[i].perhd + "--" + data.lbclassic[i].eggweightinweek + "--" + data.lbclassic[i].eggmasscumul1 + "--" + data.lbclassic[i].eggmassinweek + "--" + data.lbclassic[i].eggmasscumul + "</p></div>"; 
     } 
     output += "</div></ul>"; 
     document.getElementById("placeholder").innerHTML = output; 
    }); 
}); 

Это прекрасно работает, пока в один момент - когда я добираюсь до последнего элемента (90 в данном случае), он не появится.

+0

Может быть проблема с тем, как элементы индексируются? В верхнем коде вы ищете элементы в диапазоне 1 Godwhacker

+0

Я думаю, вам просто нужно запустить свой цикл из i = 0, и если у вас есть идентификаторы типа age1, age2 ... и т. д. (поэтому они начинаются с 1), то вы просто добавляете 1, например: 'var sty = document.getElementById (" age "+ (i + 1));' –

+0

Спасибо, ребята, я, наконец, подумал о чем-то другом, который IMO проще, я обновил поток. – xxxxxxxxxxxxx

ответ

0
function myFunction(valor) {    
     var elementos = document.getElementsByClassName("inner"); 
     var i; 
     for (i = 1; i < elementos.length+1; i++) { 
       document.getElementById("age"+i).style.visibility = "hidden"; 
     } 
     document.getElementById("age"+valor).style.visibility = "visible"; 
} 
0

Не проще ли использовать css "display: none;" функция для удаления элемента.

.yourclass{ 
    display:none; 
} 

просто изменить класс с Js

Link to CSS

+0

Да, я знаю об этом правиле CSS, но это будет тот же случай, моя проблема была связана с циклом. Спасибо! – xxxxxxxxxxxxx

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