Editado con mi progreso:
Noob aquí. Sé suficiente javascript para meterme en problemas. Caso práctico: mi tienda web tiene una plantilla existente para una lista de empaque y estoy tratando de agregarle el tamaño del artículo.
Para cada artículo pedido, la lista de empaque tiene un elemento [nombre del artículo] que contiene el Artículo + Tamaño. Escribí una función que pasa [nombre del elemento], rompe solo el tamaño y lo devuelve. Me gustaría mostrar ese tamaño en la línea de pedido junto a la cantidad, o en cualquier lugar de la línea de detalle.
La etiqueta itemSize solo se muestra en la línea de detalle superior. No está insertando donde debería.
Dediqué demasiado tiempo a este tema. ¿Alguien puede ayudar?
<!--START: items--> <div class="row"> <div class="invoice-id">[id]</div> <div class="invoice-items"> [itemname]<!--START: warehouse_location--><br /> [warehouse_location] [warehouse_aisle] [warehouse_bin] [warehouse_custom]<!--END: warehouse_location--> </div> <div id="itemSize"></div> <div class="invoice-qty">[numitems]<br /> </div> <div class="clear"></div> </div> <hr> <script language="JavaScript" type="text/javascript" > function myFunction(txt){ var str = txt.substr( txt.indexOf(";")+1, txt.length - txt.indexOf(";")); console.log(str); var newDiv= document.createElement("div"); var newContent = document.createTextNode(str); newDiv.appendChild(newContent); var currentDiv = document.getElementById("itemSize"); var nextDiv = document.getElementById("invoice-qty"); currentDiv .insertBefore(newDiv, nextDiv ); } myFunction("[itemname]"); </script> <!--END: items-->El id de atributo debe ser único. Puede generar una id dinámica, algo así como: id-[index] y luego, en su función JS, apunte a la id que coincide con cada elemento.
function myFunction(txt, index) { var str = txt.substr( txt.indexOf(";")+1, txt.length txt.indexOf(";")); var newDiv= document.createElement("div"); var newContent = document.createTextNode(str); newDiv.appendChild(newContent); var currentDiv = document.getElementById(`itemSize-${index}`); var nextDiv = document.getElementById("invoice-qty"); currentDiv .insertBefore(newDiv, nextDiv ); }