Questions sur les fonctions récursives javascript. Veuillez les poser à un maître.
漂亮男人
漂亮男人 2017-06-28 09:24:22
0
2
686

Bonsoir Maître, aidez-moi s'il vous plaît à découvrir pourquoi ma fonction ne peut pas être exécutée ?
Explication de la situation : Puisque la table dans p est chargée via ajax, le but de la fonction est de déterminer s'il existe une telle table. Si c'est le cas, rendez son arrière-plan rouge. Sinon, exécutez la fonction suivante après 1 seconde. Mais maintenant, lorsque la table a été chargée et affichée, la fonction find() ne fait pas devenir la table rouge (rapport d'erreur : Uncaught RangeError : Taille maximale de la pile d'appels dépassée)
Merci d'avance, maîtres !

漂亮男人
漂亮男人

répondre à tous(2)
我想大声告诉你

Parce que vous avez dépassé le nombre maximum d'appels avec p.getElementsByTagName('table')[0]这个取到的是一个DOM对象,由于DOM对象没有.length属性,所以target.length其实是未定义的。而undefined > 0的值一直是false,所以你会无限次地调用else分支,所以也就会添加无数次的find(p)绑定。所以浏览器提示find.

La bonne approche consiste à laisser la valeur de targetp.getElementsByTagName("table"),这才是一个数组,才有.length.

Mise à jour

Code :
Option 1 : (Jugez la longueur du tableau de toutes les tables et effectuez la première opération)

function find(p) {
    var target = p.getElementsByTagName("table");
    if (target.length > 0) {
        target[0].style.background = 'red';
    } else {
        setTimeout(function() {
            find(p);
        }, 1000)
    }
};

Option 2 : (Juger directement la table et faire fonctionner directement la table obtenue)

function find(p) {
    var target = p.getElementsByTagName("table")[0];
    if (target) {
        target.style.background = 'red';
    } else {
        setTimeout(function() {
            find(p);
        }, 1000)
    }
};
世界只因有你

target.length target est table, qu'est-ce que table.length ?

Veuillez vous y référer

function find(p) {
  var interval = setInterval(function () {
    var target = p.getElementsByTagName("table")[0]
    if (target) {
      clearInterval(interval)
      target.style.background = 'red'
    }
  }, 1000)
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal