为什么我的控制台日志中总是出现空值?

2024-01-04

在 JS 中,我正在创建一个输入元素,该元素将嵌套在 html 上 id 为“scripts”的 div 内。我通过 JS 将一个值附加到该输入字段,然后我想在另一个 JS 函数中捕获输入的值。问题是,当我在检查元素中运行页面时,我可以看到我创建的输入中有一个值,该输入的 ID 为“spam_key”,但我创建的用于访问和获取该值的函数输入元素无法正常工作。如果我转到控制台并写入 console.log(str) 我将得到 null 结果。

这是我在 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
});

我所做的是将输入检索函数的主体从第二个移动$(document).ready() to the 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       
        });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的控制台日志中总是出现空值? 的相关文章