TEL:400-8793-956
当前位置:程序、服务器

尝试了一些不同的方法,但它不起作用...可以在对象文字中创建元素吗?

提问者: 近期获赞: 浏览人数: 发布时间:2021-03-08 11:24:21

 问:您好,所有时髦的冷麦地那都在那里...

 
在“添加和删除元素”视频与之前的视频“创建元素”之间,Chalkmeister负责该createNewTaskElement功能,并在其中进行操作。
 
var  createNewTaskElement  =  function (taskString ) 
//创建列表项var listItem = document 。createElement (“ li” ); // checkbox var checkbox = document 。createElement (“ input” ); // label var label = document 。createElement (“ label” ); //输入(文本)var editInput = document 。createElement (    
 
       “输入” );  
//button.edit var editButton = document 。createElement (“ button” ); //button.delete var deleteButton = document 。createElement (“ button” ); //每个元素都需要修改//所有适当的属性和属性//每个元素都需要附加listItem 。appendChild (checkbox ); listItem 。appendChild (label ); listItem 。appendChild (    
 
    editInput ); 
listItem 。appendChild (editButton ); listItem 。appendChild (deleteButton ); 返回listItem ; }    
 
所以,我坐在那儿,看着安德鲁·查克利(Andrew Chalkley)的代码,然后开始思考,然后对自己说……。和整齐的DRY代码,为什么不将变量归为一类……哦,我知道!这都与一件事有关,所以为什么不尝试将所有内容粘贴到对象中,然后使用for in循环附加所有的东西?”
 
“是的!” 我自豪地回答自己。
 
因此,我对其进行了重新设计,使其看起来像这样……
 
var  createNewTaskElement  =  function (taskString ) 
//创建列表项var listItem = document 。createElement (“ li” ),//列出项目newTask = { checkbox :document 。createElement (“ input” ),//复选框标签:document 。createElement (“ label” ),// label editInput :document 。createElement (    
              “ input” ), // input(文本)
editButton :document 。createElement (“ button” ),//button.edit      deleteButton :document 。createElement (“ button” )//button.delete }; //每个元素需要修改//所有适当的特性和属性//每个元素需要追加用于(元件在newTask ){的listItem 。appendChild (element ); } return listItem ;              
 
}
因此,这将创建listItem第一个对象,然后使用我认为是所有其他元素的方法初始化对象文字,然后我认为for in循环只会遍历该对象并附加所有元素。
 
唯一的问题是,事实并非如此。它不起作用,我明白了...
 
太...浪费了吗?我为什么不能这样做?肯定是在告诉我,由于要附加的东西实际上不是一个节点,因此我试图提供的参数(元素)实际上不是一个节点,因此可以告诉我未创建键值。我显然对使用DOM及其所有可爱之处还很陌生,但是,我不知道,这似乎是您可以做的事情。您可以像初始化变量一样凭空创建键值对,为什么这不起作用?
 
文档对象上的方法是否被认为不是有效的表达式,因此无法在对象中设置为值?
 
对于为什么此方法不起作用的任何帮助和见解都将是很可爱的,并深表感谢。
 
 
答:据我所知,没有理由不这样做。for in但是,您的循环当前正在尝试附加key而不是value。由于key只是一个string,因此您会收到该Node错误。
 
//尝试运行此,看看发生了什么事情:
为(元素 在 newTask ) {
控制台。log (“当前元素键:” + element ); 控制台。log (“当前元素值:” + newTask [ element ]);}        
        
显然,还需要其他一些内容才能使所有内容真正起作用,但是希望可以清除您的障碍。寻找使您的代码更简洁的方法的工作做得很好。
上一篇: 服务器端开发:Python(Flask / Django)vs PHP vs Rails vs Node.js?
下一篇: 错误提示“确保方法名为fetchTreehouseBlogPosts并具有正确的语法”