(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 »

StackOverflow https://stackoverflow.com//questions/23054906

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>
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top