JavaScript对象实例在同一循环中从定义变为未定义

时间:2014-11-26 01:59:28

标签: javascript json undefined

我遇到了一个问题,一个对象实例在同一个循环中从define转到undefined。 结果变量是使用PHP生成的对象数组。该数组包含唯一标识符,我希望能够将此唯一编号记录到控制台。我想将console.log()命令添加到每个按钮以获取唯一的ID号。使用PHP生成具有匹配ID的唯一按钮。

对象存在并且在jQuery行之前的循环中具有id_text实例。 console.log()命令返回预期的结果。

每个按钮附带的click()方法内的console.log()命令返回错误'undefined'和'Uncaught TypeError:无法读取属性'id_text'的undefined'。

这是与在脚本标记内调用但在正文中使用的结果相关的范围问题吗?我运行了一些测试,将结果数组放在一个不同的标签中,但它工作正常,所以我倾向于远离它。

我还关闭了按钮中的结果打印,以验证问题不在于添加click()方法是正确的,只是打印文本,并且工作正常。

<script type="text/javascript">
// define variable to hold JSON text data
// pass PHP variable and JSON encode to java script use.
var results = <?php echo json_encode($results, JSON_PRETTY_PRINT); ?>;

$(document).ready
(
    function()
    {   
        // loop through array of Objects
        for (var i = 0; i < results.length; i++)
        {
            // this line correctly prints the text
            console.log("Object print");
            console.log(results[i]);
            console.log("Object id_text");
            console.log(results[i].id_text);
            // attach event handlers to unique buttons. button function operates
            $("#" + results[i].id_text + "-newCropImage").click(
                function() {
                    // test text for the button
                    console.log("Print results from button");
                    // console log is undefined
                    console.log(results[i]);
                    // alternatively I get the error Uncaught TypeError: Cannot read property 'id_text' of undefined when I try below
                    console.log(results[i].id_text);
                });
        }
    }
);

0 个答案:

没有答案