我遇到了一个问题,一个对象实例在同一个循环中从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);
});
}
}
);