Necesito ayuda tengo un problema al mostrar un elemento dentro de un bucle.

  • Autor Autor Mr_J21
  • Fecha de inicio Fecha de inicio
Mr_J21

Mr_J21

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Necesito ayuda tengo un problema al mostrar un <li></li> dentro de un bucle.
return template.replace(/<li>([\s\S]*?)<\/li>/g, replaceMenuLoop);
 
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 edición:
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>
 
Atrás
Arriba