(esto) no funciona;da como resultado un “Error de tipo no detectado:No se puede leer la propiedad 'subcadena' de indefinido”
-
23-12-2019 - |
Pregunta
Tengo el siguiente código que Chrome Inspector depura con el error "Uncaught TypeError:No se puede leer la propiedad 'subcadena' de indefinido":
<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>
Estoy bastante seguro de que el problema está en (this)
, pero lo usé correctamente en un script diferente con .click
y ese código funciona bien.
¿Es porque (this)
no se puede usar en .ready
?Si es así, ¿cómo podría hacer que esta función funcione con un código alternativo?
EDITAR con 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>
Solución
El problema es que en la función de documento listo this
puntos para documentar http://jsfiddle.net/IrvinDominin/J2r5V/
En este caso no puedes tener ninguno. article
elemento principal del documento, por lo que su función genera el error http://jsfiddle.net/IrvinDominin/J2r5V/1/.
Creo que tienes que conseguir todos tus div
elementos según sus necesidades, y para cada uno de ellos ejecutar la función actual;en el contexto de cada this
será el elemento correcto.