HTML结构创建时这样吗?wrap中的p标签和第二个下拉菜单怎么写HTML结构?

HTML结构创建时这样吗?wrap中的p标签和第二个下拉菜单怎么写HTML结构?

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>

<body>

    <div id="wrap">

   <!-- <div>

     <div class="title">自定义select</div>

     <select id="demo">

       <option value="1" type="构建工具">Babel</option>

       <option value="2" type="构建工具">Webpack</option>

       <option value="3" type="构建工具">Rollup</option>

       <option value="4" type="前端框架">Vue</option>

       <option value="5" type="前端框架">Angular</option>

       <option value="6" type="前端框架">React</option>

       <option value="7" type="前端框架">Nerv</option>

     </select>

   </div>

   <div>

     <p id="out"></p>

   </div>


 

   <div style="text-align: center;margin-top: 60px;">

     <div class="title">原生select</div>

     <select>

       <option value="1" type="构建工具">Babel</option>

       <option value="2" type="构建工具">Webpack</option>

       <option value="3" type="构建工具">Rollup</option>

       <option value="4" type="前端框架">Vue</option>

       <option value="5" type="前端框架">Angular</option>

       <option value="6" type="前端框架">React</option>

       <option value="7" type="前端框架">Nerv</option>

     </select>

   </div> -->

 </div>

 <script>

     const data=[

   {type:'建构工具',value:'1',pid:'0'},

   {type:'Bable',vlaue:'2',pid:'1'},

   {type:'Webpack',value:'3',pid:'1'},

   {type:'Rollup',value:'4',pid:'1'},

   {type:'前端框架',value:'5',pid:'0'},

   {type:'Vue',value:'6',pid:'5'},

   {type:'Angular',value:'7',pid:'5'},

   {type:'React',value:'8',pid:'5'},

   {type:'Nerv',value:'9',pid:'5'}  

];

     


//   function Ancestry(data,p){

// let arr = [];

//     function findId(data,p){

//         for(let i = 0; i<data.length; i++){

//              let item = data[i];

//             if(item.value==p){

//                 arr.push(item);


//                 findId(data,item.pid);

//             }

//         }

//     };

//       findId(data,p);

//       return arr;

// }

// console.log(Ancestry(data,1));



function getSubTree(data,id){

   let son = [];

   let level=0;

   function findId(data,id,level){

       for(let i=0; i<data.length; i++){

           let item = data[i];

           if(item.pid == id){

               item.level = level;

               son.push(item);

               findId(data,item.value,level+1)

           }

       }

   }

   findId(data,id,level);

   return son;

}

// console.log(getSubTree(data,0));  

 //创建dom  


 

 

 


 createElement = function(){

 

 let tree = getSubTree(data,0);

 let temp = [];

 for (let i = 0; i<tree.length; i++){

     let arr = tree[i];

     temp.push( `

     '<option value="1" >'+${arr.type}+'</option>'

     `);

    }


    //html模板

    let tamplate = `

    <div class="title">自定义select</div>

    <select id=''>${temp.join('')}</select>

   

    `

   let wrap = document.getElementById('div');

   wrap.innerHTML = tamplate;

   console.log(wrap.innerHTML);

//     let out = document.createElement('div');

// wrap.appendChild(out);

   }


 </script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕慕子 2019-08-25 11:58:22

同学你好,老师这里的意思是建议同学不要使用select标签, 推荐使用div标签,然后通过js逻辑实现点击下拉菜单项切换下拉列表显示。

因为同学最后没有调用createElement函数, 所有页面没有显示内容。另, 使用模板字符串就不要只用字符串拼接了。 建议修改:

http://img1.sycdn.imooc.com//climg/5d62072b0001af7410460668.jpg

http://img1.sycdn.imooc.com//climg/5d62073500018b6202550267.jpg

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~


好帮手慕星星 2019-08-23 17:30:00

同学你好,

1、第一个自定义下拉框创建结构的时候就不要用select标签了,这样出来的效果还是和原生的select是一样的,建议换成div,点击填充的逻辑通用js实现。并且wrap元素的id值为wrap,不是div哦:

http://img1.sycdn.imooc.com//climg/5d5fb21100018b0b05250088.jpg

否则获取不到元素。

2、p标签和原生的下拉菜单不用在js中生成,直接在html中用标签实现就可以。

祝学习愉快!

  • 提问者 慕妹2075046 #1
    点击填充的逻辑通用js实现 这个老师说的时什么意思? 为什么数据获取了,dom建立了,HTML结构中还是没有js获取的数据呢?
    2019-08-25 11:22:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师