2016-06-25 2 views
0

je me suis déplacé ce code de travail dans WordPress et deVersion Switched de jQuery et maintenant se Uncaught TypeError: Impossible de lire la propriété 'remplacer'

http://code.jquery.com/jquery-1.11.3.min.js

à la version intégrée de WordPress jQuery v1.12.4

et maintenant je reçois un TypeError Uncaught: Impossible de lire la propriété « replace » undefined

<div class="meter"> 
    <span style="width:50%"></span> 
    <p></p> 
</div> 

var bar = $('span'); 
var p = $('p'); 

var width = bar.attr('style'); 
width = width.replace('width:', ''); 
width = width.substr(0, width.length-1); 


var interval; 
var start = 0; 
var end = parseInt(width); 
var current = start; 

var countUp = function() { 
    current++; 
    p.html(current + '% completed); 

    if (current === end) { 
    clearInterval(interval); 
    } 
}; 

interval = setInterval(countUp, (1000/(end + 1))); 

Qu'est-ce que je manque à la version ch ange?

+1

La fonction de remplacement dans ce code fonctionne correctement pour moi. Pourrait-il y avoir plus d'un span sur votre page HTML? Peut-être spécifier un ID pour l'envergure, puis obtenir la largeur de l'intervalle avec cet ID spécifique. https://jsfiddle.net/ts7hj8ks/1/ –

Répondre

0

@TheShaman a trouvé la raison de l'erreur. Ce n'est pas la mise à niveau de jQuery mais l'introduction d'un autre span qui cause le problème. Si un span précédemment sélectionné par votre sélecteur n'a pas d'attribut style, vous obtiendrez le message d'erreur que vous signalez. Il suffit de rendre votre sélecteur plus restrictif pour corriger le problème:

var bar = $('.meter span'); 
+0

Je pensais qu'avant et essayé d'ajouter .meter span j'ai aussi essayé d'ajouter une classe à la balise span. Il meurt toujours au .replace. – Jason