Preciso de ajuda tenho um problema ao mostrar um elemento dentro de um loop.

  • Autor Autor Mr_J21
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Mr_J21

Mr_J21

Beta
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Necesito ayuda tengo un problema al mostrar un <li></li> dentro de un bucle.
return template.replace(/<li>([\s\S]*?)<\/li>/g, replaceMenuLoop);
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Hola, ahi falta mucho código para poder ayudarte, la función completa, template y replaceMenuLoop.
 


¿Necesitas que cada lista mantenga el anchor también?
 
Sin embargo ahora que veo tu codigo bien y lo comparo con el que te envie, tengo dudas, tu codigo esta remplazando cada marcador <name> con el valor de entry[prop] donde el prop es el valor capturado anteriormente en el array data.items, luego estas remplazando cada instancia de <li> con el resultado anterior, por lo que al final si te devuelve una cadena de Jane Jane Jane.
 
El codigo que yo te envie, estoy quitando todo lo anterior y generando el elemento html completo con cada uno de los data.items y los remplazo en <li>, por que pensé que querias que cada elemento del array se mostrara en una lista.

Pero nunca dijiste que necesitabas exactamente jaja asi que no se realmente si era eso, igual me comentas.
 
Sin embargo ahora que veo tu codigo bien y lo comparo con el que te envie, tengo dudas, tu codigo esta remplazando cada marcador <name> con el valor de entry[prop] donde el prop es el valor capturado anteriormente en el array data.items, luego estas remplazando cada instancia de <li> con el resultado anterior, por lo que al final si te devuelve una cadena de Jane Jane Jane.
Es correcto.

Aquí está reemplazando la etiqueta <li></li>:

return template.replace(/<li>([\s\S]*?)<\/li>/g, replaceMenuLoop);

No quiero que reemplaze la etiqueta <li></li>. Solo quiero que identifique la etiqueta y que muestre loop.
Pero no esta resultando de esta manera
: /(<li[^>]>)([\s\S]?)(<\/li>)/g

//* Resultado de lo que espero:

<div class='menus'>
<div class='menu'>
<li> <-----"identificando esta etiqueta para saber donde mostrara loop"
<a class='name'><name></a>
<a class='name'><name></a>
<a class='name'><name></a>
<a class='name'><name></a>
</li>
</div>
</div>

*//


 
Última edição:
Bueno, creo que es un poco mas sencillo, lo puedes hacer de este modo:

<div class='menus'>
<div class='menu'>
<li>
<div> <- Identifica este y lo reemplazas (esto hara que quede li)
<a class='name'><name></a>
</div>
</li>
</div>
</div>

return template.replace(/<div>([\s\S]*?)<\/div>/g, replaceMenu);
}
 
Puedes poner un ol, ul, etc. Al identificarlo como lo tienes, va a remplazar ese div (o el elemento que coloques alli) por cada elemento del array junto con el anchor. Pero como <li> ya no lo estas remplazando, se queda.
 
Bueno, creo que es un poco mas sencillo, lo puedes hacer de este modo:

<div class='menus'>
<div class='menu'>
<li>
<div> <- Identifica este y lo reemplazas (esto hara que quede li)
<a class='name'><name></a>
</div>
</li>
</div>
</div>

return template.replace(/<div>([\s\S]*?)<\/div>/g, replaceMenu);
}
Esto es sólo un ejemplo, si lo hiciera así entonces sería muy complicado.

Este código crecerá con varios bucles.

¿Crees que puedes hacerlo de esta manera entonces?
<div class='menus'>
<div class='menu' var="loop">
<a class='name'><name></a>
</div>
</div>

Simplemente modificando este código: return template.replace(/<div>([\s\S]*?)<\/div>/g, replaceMenu);
 
Esto es sólo un ejemplo, si lo hiciera así entonces sería muy complicado.

Este código crecerá con varios bucles.

¿Crees que puedes hacerlo de esta manera entonces?


Simplemente modificando este código: return template.replace(/<div>([\s\S]*?)<\/div>/g, replaceMenu);
quieres que el resultado siga siendo una lista pero que esta vez sea únicamente dentro del div que tiene var='loop' ?

Por que anteriormente me habias dicho que querias este resultado:

1703710247988.webp
 
quieres que el resultado siga siendo una lista pero que esta vez sea únicamente dentro del div que tiene var='loop' ?

Por que anteriormente me habias dicho que querias este resultado:

Exacto, que identifique el atributo.

Por ejemplo, así es como lo usaré:

<div class='menus'>
<div class='menu1' var="loop">
<a class='name'><name></a>
</div>
<div class='menu2' var="loop">
<a class='name'><name></a>
</div>
</div>
 
Voltar
Topo