[前端] js实现动态元素创建

因为是先学习的jquery,以至于对纯js的动态生成节点元素还不熟悉,所以在此写下自己的测试,希望对大家有所帮助

方法:

createElement 创建元素

appendChild(); 追加子元素

cssText 样式文本

createAttribute() 创建属性

createTextNode() 创建文本节点

createAttribute('type').nodeValue 设置属性值

createElement('input').setAttributeNode() 向元素中添加属性

Math.floor() 舍位取整

Math.random() 0~的随机数

 

<script type="text/javascript">

    /* 创建列表 */
    var arr = [1, 2, 3, 4, 5, 6, 7];
    var ul = document.createElement('ul');
    for(var i= 0; i<arr.length; i++) {
        var li = document.createElement('li');
        var text = document.createTextNode(arr[i]);
        li.appendChild(text);
        ul.appendChild(li);
        li.style.cssText = "list-style-type: none;float:left; width: 24px; height: 24px; margin-right: 5px; border: 1px solid #ccc; text-align: center; line-height: 24px;";
    }
    document.body.appendChild(ul);

    /* 创建按钮 */
    var button = document.createElement("input");
    var buttonType = document.createAttribute('type');  // 创建属性
    var buttonValue = document.createAttribute('value');
    buttonType.nodeValue = 'button';  // 设置属性值
    buttonValue.nodeValue = '按钮';
    button.setAttributeNode(buttonType);  // 设置属性
    button.setAttributeNode(buttonValue);
    button.style.cssText = "height: 26px; padding: 0 10px;";
    document.body.appendChild(button);

    /* 设置按钮事件 */
    button.addEventListener('click', function() {
        var div = document.createElement('div');
        div.style.clear = 'both';
        div.style.height = 32+'px';
        div.style.marginTop = 5+'px';
        var ul = document.createElement('ul');
        for(var i= 0; i<arr.length; i++) {
            var li = document.createElement('li');
            var text = document.createTextNode(arr[Math.floor(Math.random() * arr.length)]);
            li.appendChild(text);
            ul.appendChild(li);
            li.style.cssText = "list-style-type: none;float:left; width: 24px; height: 24px; margin-right: 5px; border: 1px solid #ccc; text-align: center; line-height: 24px;";
        }
        div.appendChild(ul);
        document.body.appendChild(div);
    }, false);
    
</script>

 

欢迎关注技术开发分享录:http://fenxianglu.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天空还下着雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值