Pergunta

Essa paz de código funciona para o primeiro clique. Mas parece não conseguir obter um novo ID do próximo clique. A idéia por trás disso é mostrar uma parte de um formulário e, com clique em um botão, ele se esconde primeiro e mostra a segunda parte. Alguma ideia do que estou fazendo de errado? Eu acho que tem algo a ver com "isso", mas pelo meu entendimento deve obter o ID do segundo link também.

        window.addEvent('domready', function() 
            {
            $('page_2').slide('hide');
            $('page_3').slide('hide');
            $('page_4').slide('hide');
            $('page_5').slide('hide');
            var togglePrefix = 'toggle_', boxPrefix = 'page_', emptyPrefix = '';
            var links = $('submit_box').getElements('a');
            links.addEvent('click', function(e)
                {
                e.stop();
                var id = $(this.get('id').replace(togglePrefix,emptyPrefix));
                var id_new = parseInt($(this).get('id').replace(togglePrefix, emptyPrefix)) + 1; 
                var next = ('page_'+id_new);
                var id_old = $(this.get('id').replace(togglePrefix,boxPrefix));
                $(id_old).set('slide', {duration: 'long', transition: 'linear'});
                $(id_old).slide('out');
                $(next).slide('in');
                });
            });

O HTML segue esse padrão:

<div id="page_1">

    <div id="inhalt-gewinn">
      <div id="gewinn_bild"></div>
      <div id="gewinn_form">
          <form id="gewinnspiel" name="gewinnspiel" method="post" action="<?=$_SERVER[PHP_SELF]; ?>">
              <div id="input_box">
                  <div><input type="radio" name="frage1" value="Kamille" /><span>Kamille</span></div>
                  <div><input type="radio" name="frage1" value="Kaktus" /><span>Kaktus</span></div>
                  <div><input type="radio" name="frage1" value="Krokus" /><span>Krokus</span></div>

              </div>
              <div id="submit_box"><a id="toggle_1" class="frage">nächste Frage...</a></div>

      </div>
      <div id="gewinn_werbung"></div>
    </div>
</div>
Foi útil?

Solução

Se eu entender o exemplo, você tem um monte de divs com identificação Page_1, página_2 e assim por diante. Em cada div é uma div com o id "submit_box". Quando você escreveu $('submit_box').getElements('a') Ele adicionará o evento apenas ao primeiro div, um ID deve ser único. Você não pode ter mais do que um elemento com um ID exclusivo na página. Portanto, para obter seu exemplo de trabalho, altere o ID para um nome de classe e use $$ ('div.submit_box A').

Outras dicas

O uso do ID várias vezes na página arruinou o código! Depois de consertar isso, funcionou bem

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top