jQuery text() не работает с API

#jquery #api #text

#jquery #API #текст

Вопрос:

Пытаюсь использовать jQuery для суммирования 4 разных сумм пожертвований. Один из итогов заполняется через API.

 <p class="donor-raised" id="api-raised"></p>
  

Как вы можете видеть, читать нечего, когда я использую $("#api-raised").text()

Это не говорит undefined или что-то еще. Просто, ничего.

Я попытался использовать функцию document.ready, чтобы посмотреть, была ли это проблема. Это не так.

Если я проверю его в браузере, это будет выглядеть так:

 <p class="donor-raised" id="api-raised">$10,000</p>
  

Итак, я не совсем понимаю, почему он не может его прочитать.

Любая помощь?

Редактировать, добавляя больше кода

Мой HTML:

 <p class="donor-raised" id="api-raised"></p>
<p class="donor-raised oe_structure">Coming Soon!</p>
<p class="donor-raised oe_structure">Coming Sooner!</p>
<p class="donor-raised oe_structure">Coming Soonest!</p>
  

Моя функция API: не является AJAX

 $(function() {
  var req = new XMLHttpRequest();
  req.open('GET', "https://test.site.org/get-thermo-info/company", true);
  req.send();

  req.onreadystatechange = processReq;

  function processReq(e) {
    var response = JSON.parse(req.responseText);
    var num = response.donation_goal;
    var $total = num.toString().replace(/(d)(?=(ddd) (?!d))/g, "$1,");
    document.getElementById("api-raised").innerHTML = "$"    $total;
  }
});
  

Моя функция Get Nums (пока …):

 $(document).ready(function() {
  var donors_raised = $(".donor-raised");
  var total = 0;

  donors_raised.each(function() {
    var donations_total = $(this).text();

    console.log("Donations: "   donations_total);
    // total  = donations_total;
  })
  console.log("Total: "   total);
});
  

Итак, когда все сказано и сделано, я хочу parseInt() .text() и сложить их все вместе для окончательного итога.

Комментарии:

1. Не могли бы вы предоставить тестовый пример?

2. Если это поле заполняется через ajax, вам нужно проверить его текст после загрузки ajax. Поэтому вам нужно использовать функцию обратного вызова, вызываемую этим ajax после ее успешного выполнения

3. не могли бы вы опубликовать больше кода?

Ответ №1:

Я не уверен, правильно ли я понял. Прежде всего .text() это getter, если вы хотите добавить текст, он работает .text("required content");

Комментарии:

1. Спасибо, но я не пытаюсь добавить текст. Просто пытаюсь получить текст из <p>.

Ответ №2:

Хорошо! Итак, я изменил свою функцию API на:

 $.getJSON('https://test.site.org/get-thermo-info/company').done(
  function(data) {
    var num = data.donation_goal;
    var $total = num.toString().replace(/(d)(?=(ddd) (?!d))/g, "$1,");
    document.getElementById("api-raised").innerHTML = "$"    $total;
    console.log(num, $total);
    getTotalDonations();
});
  

И изменил мою функцию Get Nums, чтобы я вызывал ее внутри функции JSON.

Что происходило, так это то, что функция Get Nums выполнялась слишком рано… Очевидный ответ!