微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 HTML 集合中循环不能正确循环

如何解决在 HTML 集合中循环不能正确循环

我试图将我的 HTML 集合循环为

const nodeItems = document.getElementsByClassName('image-inside')

我试着像循环一样

for(let node of nodeItems) {
     console.log('im node ',node)                
     console.log('im node url',node.src)
     return writer.createAttributeElement( 'img',{
            src: node.src,style: `width:${node.style.width};
                    height:${node.style.height};`,class: 'image-inside'
     },{ priority: 7 } )
}

但只有第一个节点被记录了两次,而不是第二个。

enter image description here

有什么想法吗?任何帮助将不胜感激。感谢阅读

更新:所以我试图转换为数组。没关系,日志记录很好。但是它的原型是数组,我应该返回的是 Nn (由于 writer.createAttributeElement() )。我什至不认为我能做到这一点

temp[0]

The array

UPDATE2:所以目前数组已正确加载

enter image description here

但是当通过 editor.getData() 从 ckeditor5 获取数据时 它仍然采用最后一个元素

enter image description here

还是非常感谢大家的阅读

解决方法

您正在使用 *r stmt 打破循环。

查看另一个答案 https://stackoverflow.com/a/11714515/1205171

,

编辑:使用 EmptyElement,因为如果您扩展 Element 类,这就是您最终创建的内容

如评论中所述,您应该删除 return 语句。

也许可以先将其转换为数组,然后像这样重新映射数组:

let nodeItems = Array.from(document.getElementsByClassName('image-inside'));

nodeItems = nodeItems.map(function(node) {
     console.log('im node ',node)                
     console.log('im node url',node.src)
     // Instead of creating your own element from Element (i.e. Nn),why not use Empty Element class instead. It will be what you create anyways I'm guessing
     return writer.createEmptyElement( 'img',{
            src: node.src,style: `width:${node.style.width};
                    height:${node.style.height};`,class: 'image-inside'
     },{ priority: 7 } )
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。