(cela) ne fonctionne pas ;entraîne « Erreur de type non interceptée :Impossible de lire la propriété « sous-chaîne » de non défini »
-
23-12-2019 - |
Question
J'ai le code suivant que Chrome Inspector débogue avec l'erreur "Uncaught TypeError :Impossible de lire la propriété 'sous-chaîne' de non défini » :
<script type="text/javascript">
$(function countComments() {
var mcount = '//api.moot.it/postcounts?path=/forum/comments:' + $(this).closest('article').attr('id').substring(8);
$.getJSON(mcount, function(json) {
var results = $('.entry-actions');
$.each(json, function(key, val) {
results.prepend('<a class="entry-comments" href="{permalink}#comments" title="Comments">' + val['size'] + ' Comments</a>');
});
});
});
</script>
Je suis presque sûr que le problème vient de (this)
, mais je l'ai utilisé correctement dans un script différent avec .click
et ce code fonctionne très bien.
Est-ce parce que (this)
ne peut pas être utilisé sur .ready
?Si oui, comment puis-je faire fonctionner cette fonction avec un code alternatif ?
MODIFIER avec HTML :
<article id="article-5344bff8e4b01730378236ff">
<header class="entry-header cf">
<p class="entry-actions"></p>
</header>
<div class="entry-title-wrapper">
BLOG CONTENTS
<div class="entry-injection">
<script type="text/javascript">
$(function countComments() {
var mcount = '//api.moot.it/postcounts?path=/forum/comments:' + $(this).closest('article').attr('id').substring(8);
$.getJSON(mcount, function(json) {
var results = $('.entry-actions');
$.each(json, function(key, val) {
results.prepend('<a class="entry-comments" href="{permalink}#comments" title="Comments">' + val['size'] + ' Comments</a>');
});
});
});
</script>
</div>
</div>
</article>
La solution
Le problème est que dans la fonction document prêt this
points à documenter http://jsfiddle.net/IrvinDominin/J2r5V/
Dans ce cas, vous ne pouvez pas en avoir article
élément parent du document, donc votre fonction génère l'erreur http://jsfiddle.net/IrvinDominin/J2r5V/1/.
Je pense que tu dois récupérer tout ton div
éléments en fonction de vos besoins, et pour chacun d'eux exécuter la fonction en cours ;dans le contexte de chacun this
sera le bon élément.