Voici le code:JavaScript travail Méthode foreach() différemment dans Chrome et Firefox
var img = document.createElement('img');
//debugger;
console.log(img);
[1, 2].forEach(function (item) {
console.log(img);
img.removeAttribute("src")
console.log(img);
var img_src = document.createAttribute("src");
img_src.value = '/test?id=' + item;
img.setAttributeNode(img_src);
console.log(img);
});
Au début, je l'ai couru sur Chrome et obtenir le résultat:
<img src="/test?id=2">
<img src="/test?id=2">
<img src="/test?id=2">
<img src="/test?id=2">
<img src="/test?id=2">
<img src="/test?id=2">
<img src="/test?id=2">
Mais quand je l'utilise pas dans débogueur ou exécuter sur Firefox, le résultat est le même que je pensais:
<img>
<img>
<img>
<img src="/test?id=1">
<img src="/test?id=1">
<img>
<img src="/test?id=2">
Peut-être la meilleure façon est de mettre la déclaration i n la fonction forEach.
Est-ce un bug dans l'outil de développement de Chrome?
Vérifiez la valeur de outerHTML au lieu de simplement vous connecter img il aura le code html approprié, il peut être parce que le DOM est de ne pas avoir le temps de mettre à jour tous les internes corrects avant le prochain appel de journal –
@PatrickEvans Cela n'explique pas pourquoi le premier 'console.log (img)' appelle l'appel '' avant d'atteindre '.forEach()' à Chromium 60. – guest271314
@ guest271314, il pourrait puisque les itérations forEach vont lier l'interface utilisateur et pourraient, selon leur code, ne pas avoir pris une représentation textuelle de img au moment de l'appel de console.log(), et ne le feront qu'après que la boucle soit terminée –