Почему я продолжаю получать ноль в журнале консоли? - PullRequest
0 голосов
/ 15 декабря 2018

В JS я создаю элемент ввода, который будет вложен в div с id "scripts" в html.Я присоединяю значение к этому полю ввода через JS, и позже я хочу перехватить значение ввода в другой функции JS.Проблема в том, что когда я запускаю страницу в элементе inspect, я вижу, что во входе, который я создал, есть значение, у этого входа есть идентификатор "spam_key", но функция, которую я создал для доступа и получения значенияэлемента ввода не работает должным образом.Если я иду к консоли и пишу console.log (str), я получаю нулевое значение в результате.

Вот что у меня есть в HTML:

<div id="scripts" name="scripts">
    </div>

Это HTMLкогда я запускаю страницу и поле ввода создается:

<div id="scripts" name="scripts">
    <input type="number" id="spam_key" value="239">
</div>

Теперь это мой JS:

var c = 0;
var a;
var b;
function counter() {
    return c++;
}

$(document).ready(function () {
    var url = "https://graph.facebook.com/v3.2/...";

    $.getJSON(url, function (data) {
        var items = [];
        $.each(data.data, function (i, obj) {
            //$('#target').append($('<div/>', { id: 'dummy' + i }))
            var text = '<p class="review_text">' + obj.review_text + '</p>'
            var date = '<p class="date">' + obj.created_time + '</p>'
            a = counter();
            $("#carousel").find("[data-index='" + i + "']").append(text, date)

        });
        $('#scripts').append('<input type="number" id="spam_key" value= ' + a + '>');
    });


});

И это то, что я использую, чтобы получить значение вводаэлемент:

var str;
$(document).ready(function () {
    element = document.getElementById('spam_key');
    if (element !== null) {
        str = element.value;
    }
    else {
        str = null;
    }
});

Здесь следует применить значение str:

$(document).ready(function () {
    var wrapper = document.getElementById("carousel");
    var myHTML = '';
    for (b = 0; b <= str; b++) {
        myHTML += '<div id="review" data-index=' + (b) + '></div>';
    }
    wrapper.innerHTML = myHTML
});

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Вот пример из JSON:

{
   "data": [
      {
         "has_review": true,
         "review_text": "Mng sum zadovolna se bese \ud83d\udc4c\ud83c\udffc",
         "recommendation_type": "positive",
         "created_time": "December 6, 2018",
         "open_graph_story": {
            "id": "1924663150981821",
            "message": "Mng sum zadovolna se bese \ud83d\udc4c\ud83c\udffc",
            "start_time": "December 6, 2018",
            "type": "sellers.rates",
            "data": {
               "recommendation_type": "positive",
               "review_text": "Mng sum zadovolna se bese \ud83d\udc4c\ud83c\udffc",
               "is_hidden": false,
               "language": "mk",
               "seller": {
                  "id": "2075976265961628",
                  "title": "My Spa Home & Office Massage - \u041c\u0430\u0441\u0430\u0436\u0430 \u0432\u043e \u0432\u0430\u0448\u0438\u043e\u0442 \u0434\u043e\u043c \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u043d\u043e \u043c\u0435\u0441\u0442\u043e",
                  "type": "place",
                  "url": "https://www.facebook.com/myspamk/"
               },
               "has_review_update": false
            }
         },
         "has_rating": false
      },
      {
         "has_review": true,
         "review_text": "\u041e\u0434\u043b\u0438\u0447\u043d\u043e \u0438\u0441\u043a\u0443\u0441\u0442\u0432\u043e. \u0420\u0435\u0442\u043a\u043e \u0441\u0430\u043a\u0430\u043c \u043c\u0430\u0441\u0430\u0436\u0438, \u0437\u0430\u0448\u0442\u043e \u043c\u0438 \u0441\u0435 \u043d\u0435\u043f\u0440\u0438\u0458\u0430\u0442\u043d\u0438 \u0447\u0435\u0441\u0442\u043e, \u043d\u043e, \u043e\u0432\u0430 \u0442\u043e\u043f\u043b\u043e \u0433\u043e \u043f\u0440\u0435\u043f\u043e\u0440\u0430\u0447\u0443\u0432\u0430\u043c! \u0411\u0440\u0430\u0432\u043e \u0434\u0435\u0447\u043a\u0438. \u2764",
         "recommendation_type": "positive",
         "created_time": "December 5, 2018",
         "open_graph_story": {
            "id": "1145960125557706",
            "message": "\u041e\u0434\u043b\u0438\u0447\u043d\u043e \u0438\u0441\u043a\u0443\u0441\u0442\u0432\u043e. \u0420\u0435\u0442\u043a\u043e \u0441\u0430\u043a\u0430\u043c \u043c\u0430\u0441\u0430\u0436\u0438, \u0437\u0430\u0448\u0442\u043e \u043c\u0438 \u0441\u0435 \u043d\u0435\u043f\u0440\u0438\u0458\u0430\u0442\u043d\u0438 \u0447\u0435\u0441\u0442\u043e, \u043d\u043e, \u043e\u0432\u0430 \u0442\u043e\u043f\u043b\u043e \u0433\u043e \u043f\u0440\u0435\u043f\u043e\u0440\u0430\u0447\u0443\u0432\u0430\u043c! \u0411\u0440\u0430\u0432\u043e \u0434\u0435\u0447\u043a\u0438. \u2764",
            "start_time": "December 5, 2018",
            "type": "sellers.rates",
            "data": {
               "recommendation_type": "positive",
               "review_text": "\u041e\u0434\u043b\u0438\u0447\u043d\u043e \u0438\u0441\u043a\u0443\u0441\u0442\u0432\u043e. \u0420\u0435\u0442\u043a\u043e \u0441\u0430\u043a\u0430\u043c \u043c\u0430\u0441\u0430\u0436\u0438, \u0437\u0430\u0448\u0442\u043e \u043c\u0438 \u0441\u0435 \u043d\u0435\u043f\u0440\u0438\u0458\u0430\u0442\u043d\u0438 \u0447\u0435\u0441\u0442\u043e, \u043d\u043e, \u043e\u0432\u0430 \u0442\u043e\u043f\u043b\u043e \u0433\u043e \u043f\u0440\u0435\u043f\u043e\u0440\u0430\u0447\u0443\u0432\u0430\u043c! \u0411\u0440\u0430\u0432\u043e \u0434\u0435\u0447\u043a\u0438. \u2764",
               "is_hidden": false,
               "language": "mk",
               "seller": {
                  "id": "2075976265961628",
                  "title": "My Spa Home & Office Massage - \u041c\u0430\u0441\u0430\u0436\u0430 \u0432\u043e \u0432\u0430\u0448\u0438\u043e\u0442 \u0434\u043e\u043c \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u043d\u043e \u043c\u0435\u0441\u0442\u043e",
                  "type": "place",
                  "url": "https://www.facebook.com/myspamk/"
               },
               "has_review_update": false
            }
         },
         "has_rating": false
      },
      {
         "has_review": true,
         "review_text": "The best massage in Skopje, highly recommend!",
         "recommendation_type": "positive",
         "created_time": "November 28, 2018",
         "open_graph_story": {
            "id": "10214943185147892",
            "message": "The best massage in Skopje, highly recommend!",
            "start_time": "November 28, 2018",
            "type": "sellers.rates",
            "data": {
               "recommendation_type": "positive",
               "review_text": "The best massage in Skopje, highly recommend!",
               "is_hidden": false,
               "language": "en",
               "seller": {
                  "id": "2075976265961628",
                  "title": "My Spa Home & Office Massage - \u041c\u0430\u0441\u0430\u0436\u0430 \u0432\u043e \u0432\u0430\u0448\u0438\u043e\u0442 \u0434\u043e\u043c \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u043d\u043e \u043c\u0435\u0441\u0442\u043e",
                  "type": "place",
                  "url": "https://www.facebook.com/myspamk/"
               },
               "has_review_update": false
            }
         },
         "has_rating": false
      },
0 голосов
/ 15 декабря 2018

Что я сделал, так это переместил тело вашей функции ввода-поиска со второго $(document).ready() на callback function вашего getJSON метода после того, как вы создали элемент input.Таким образом, мы сможем получить доступ к нему после создания элемента.Я также добавил var str; в глобальную область, где вы храните значение.

Надеюсь, это поможет.

    var c = 0;
    var a;
    var b;
    var str;
    function counter() {
        return c++;
    }

    $(document).ready(function () {
        var url = "https://graph.facebook.com/v3.2/...";

        $.getJSON(url, function (data) {
            var items = [];
            $.each(data.data, function (i, obj) {
                //$('#target').append($('<div/>', { id: 'dummy' + i }))
                var text = '<p class="review_text">' + obj.review_text + '</p>'
                var date = '<p class="date">' + obj.created_time + '</p>'
                a = counter();
                $("#carousel").find("[data-index='" + i + "']").append(text, date)

            });
            $('#scripts').append('<input type="number" id="spam_key" value= ' + a + '>');
            element = document.getElementById('spam_key');
            if (element !== null) {
                str = element.value;
            }
            else {
                str = null;
            }
            var wrapper = document.getElementById("carousel");
            var myHTML = '';
            for (b = 0; b <= str; b++) {
                myHTML += '<div id="review" data-index=' + (b) + '></div>';
            }
            wrapper.innerHTML = myHTML       
        });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...