我有一个数组(目前有一个项目),打印出来如下:
控制台图像是console.log(对象)的结果,但是我需要该数组中的第一项,所以我试图在索引0处选择对象但是这不起作用并且在控制台中打印为&# 39;未定义'使用以下代码:
var objects = wpd_editor.canvas.getObjects();
console.log(objects[0]);
答案 0 :(得分:1)
根据@shanzilla的回答,您可能需要等到所有内容都被加载 - 包括您的Fabric.js模块和您可能正在做的任何绘图 - 然后再尝试检查是否存在某些内容。不确定你是如何加载Fabric.js代码或当你绘制画布时,但快速&检查这是否是问题的脏方法是将该日志包装在超时中:
setTimeout(function () {
var objects = wpd_editor.canvas.getObjects();
console.log(objects[0]);
}, 1000)
这对您来说可能不是一个可持续的解决方案,但它会让您知道,在您等待的那一秒钟内,一些重要的事情正在发生,特别是页面的加载和呈现。对于更可持续的解决方案,使用Fabric.js's events API等待绘制画布的以下内容可能会起作用:
wpd_editor.canvas.on('after:render', function() {
var objects = wpd_editor.canvas.getObjects();
console.log(objects[0]);
});
答案 1 :(得分:0)
这样的事情会让你更接近解决方案:
for(var item of objects)
console.log(item)
或
for(var i = 0; i < objects.length; i++)
console.log(objects[i])
// if this one works, you should check if you accessing the array at the right time.
答案 2 :(得分:0)
您似乎可能在定义之前尝试记录对象数组的第一个元素。
...试
if (objects.length > 0)
console.log(objects[0])
如果没有输出则是时间问题。