Tengo un código que debería cargar dinámicamente un iframe. El problema es que tengo una función que debería hacer que se conecte en cascada a la siguiente identificación adjunta al iframe. Necesito a alguien que me ayude a identificar el problema con mi código.
const $iframe = $("#content-frame"); $($iframe).attr('src', cath); var cath = 'https://exanple.com' + myIds[i] + '/embed/dynamic?'; console.log(cath); const myIds = ['1_aq4jiqb', '1_4u0ocu4u']; function switchId() { for (let i = 0; i < myIds.length; i++) { cath = 'https://www.exanple.com' + myIds[i] + '/embed/dynamic?'; } } setInterval(function() { switchId() }, 3000); <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <iframe id="content-frame" src="" width="400px" height="400px"></iframe>Esto sobrescribe cath una y otra vez cath = 'https://www.exanple.com' + myIds[i] + '/embed/dynamic?'; y no estás usando cateterismo en ninguna parte.
NO desea ningún otro bucle que no sea el que obtiene con setInterval
Tampoco es necesario convertir un objeto jQuery en un objeto jQuery.
envuelvo la lista
const $iframe = $("#content-frame"); const myIds = ['1_aq4jiqb', '1_4u0ocu4u']; let cnt = 0; $iframe.on("load",function() { console.log($(this).attr("src"))}) setInterval(() => { const url = 'https://www.example.com/' + myIds[cnt] + '/embed/dynamic?'; $iframe.attr('src', url); cnt++; if (cnt >= myIds.length) cnt = 0; // wrap the list }, 3000); <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <iframe id="content-frame" src="" width="400px" height="400px"></iframe>Mismo código sin jQuery
const iframe = document.getElementById("content-frame"); const myIds = ['1_aq4jiqb', '1_4u0ocu4u']; let cnt = 0; iframe.addEventListener("load",e => console.log(e.target.src)) setInterval(() => { const url = 'https://www.example.com/' + myIds[cnt] + '/embed/dynamic?'; iframe.src = url; cnt++; if (cnt >= myIds.length) cnt = 0; // wrap the list }, 3000); <iframe id="content-frame" src="" width="400px" height="400px"></iframe>Solo cambie el elemento iframe SRC para resolver el problema.
const myIds = ['1_aq4jiqb', '1_4u0ocu4u']; let cnt = 0; setInterval(function() { const src = 'https://www.example.com/' + myIds[cnt] + '/embed/dynamic?'; document.getElementById('myIframe').src = src; cnt++; if (cnt >= myIds.length) cnt = 0; }, 3000);