2013-04-01 13 views
5

Mam zadanie, aby ustawić menu jako wybrane. Do tego używam identyfikatora dynamicznego. Więc chcę, aby zwiększyć ją w odniesieniu do wyboruJak zwiększyć wartość id div?

Mój kod jest

<div class="menuHeader ui-corner-top" id="menu"+ i> 
    <span><a href="#" onclick="Home()">Home</a></span> 
</div> 
<div class="menuHeader ui-corner-top" id="menu"+ i> 
    <span><a href="#" onclick="NewTransaction()">New Transaction</a></span> 
</div> 
<div class="menuHeader ui-corner-top" id="menu"+ i> 
    <span><a href="#" onclick="Portfolio()">Portfolio</a></span> 
</div> 

JavaScript jest

$(document).ready(function() { 
      alert(document.URL); 
      var list = $("#menu"); 
      for (var i = 1; i <= list.length; i++) { 
       list[i].innerHTML = i; 
      } 
      var str = document.URL.toLowerCase().indexOf("portfolio/index"); 
      alert(str); 
      if (str >= 0) { 
       $('#menu').addClass("menuHeaderActive"); 
      } 
     }); 

Jak mogę to zrobić?

+0

identyfikator powinien być unikalny. Widzę, że wielokrotnie używasz "menu" jako ID. – tymeJV

+0

Edytowałem kod – Niths

+6

Nie można wykonywać operacji w HTML. 'id =" menu "+ i' nic nie znaczy. – JJJ

Odpowiedz

11
var i=0; 
$('.menuHeader').each(function(){ 
    i++; 
    var newID='menu'+i; 
    $(this).attr('id',newID); 
    $(this).val(i); 
}); 
+0

Czy są jakieś zmiany w html? – Niths

+0

Tak, usuń te atrybuty Id ... one oznaczają mniej ... dajesz identyfikatory przez jquery – writeToBhuwan

+0

Ale to nie działa. Czy możesz dodać to również proszę – Niths

0

Po prostu użyj nazwy klasy zamiast id, będziesz mógł ponownie użyć kodu, który właśnie dodałeś, ale w ten sposób.

var list = $(".menu"); 

Jedna rada, nie rób podświetlenie elementu menu z JavaScript, zrób to po stronie serwera, a można dodać „Aktywacja” klasy bezpośrednio w kodzie HTML LI.

+0

Zmiana 'innerHTML' nie jest tym, czego szuka. Po wygenerowaniu unikalnego identyfikatora. –

+0

To, co mówię, to to, że nie jest warta, nie idealna, która jest lepsza w użyciu lub klasie, lub nadajesz jej przyjazny identyfikator w przypadku, gdy te opcje się nie zmienią. Czasami samo udzielenie odpowiedzi na pytanie, kiedy widzisz większy błąd, jest bezwartościowe. – netadictos

+0

Wiem, ale dotykanie innerHTML nie przynosiło żadnych korzyści w żaden sposób. Jeśli spojrzysz na jego przykład, stara się wskazać, który element menu jest bieżącą stroną. (Co nie ma nic wspólnego z inkrementacją numeru identyfikacyjnego.) –

1

Jest to sposób, aby to zrobić z jQuery

val elementList = $(".menu"); 
for (var i = 1; i <= list.length; i++) { 
    elementList[i].attr("id", "menu" + i); 
} 
+0

czy jest jakaś zmiana w html? – Niths

Powiązane problemy