js常用拼接DOM写法+点击事件函数传值(简单数据类型和引用数据类型二)

项目场景:

提示:这里简述项目相关背景:

结上一节,现在需要在动态生成的DOM元素上绑定点击事件并且通过事件函数传值(简单数据类型和引用数据类型)


示例代码如下:


<body>

    <button id="btn">点击生成按钮</button>

</body>

<script>

 function getPrams1(params) {
        console.log("String类型传值:" + params)
    }
    function getPrams2(params) {
        console.log("ArrayString类型传值:" + params)
    }
    function getPrams3(params) {
        //console.log(JSON.parse(params))
        console.log("ArrayObj类型事件函数传值:" + params)
        
    }
    function getPrams4(that) {
        //console.log(that.getAttribute("data-a"))
        console.log("ArrayObj类型自定义属性传值:" + that.getAttribute("data-a"))

    }
    function getPrams5(params) {
        console.log("全局变量传值:" + params)

    }



	var abc="全局变量abc";
    $("#btn").click(function () {

        var strParams = "abc";
        var arrParams = [1, 5, 'a', 'b'];
        var objParams = [{ a: 8 }, { c: 6 }, { t: 89 }];
        var objParamsJson = JSON.stringify(objParams);

        //这里直接使用反引号``(模板字符串)拼接getPrams("")的方法
        //String类型传值直接拼接到getPrams("")引号中	
        var btn1 = `<br><button οnclick='getPrams1("${strParams}")'>String类型传值按钮</button>`;
        $("body").append(btn1);
        //ArrayString类型传值直接拼接到getPrams("")引号中,打印出来是 1,5,a,b 自动转为String带,号分割符
        var btn2 = `<br><button οnclick='getPrams2("${arrParams}")'>ArrayString类型传值按钮</button>`;
        $("body").append(btn2);
        //ArrayObj类型事件函数传值 JSON.stringify()转成JSON字符串直接拼接到事件函数getPrams("")引号中会造成双引号冲突,
        //这时候可以去掉getPrams("")中的引号用JSON.stringify()再转一次就不会冲突
        var btn3 = `<br><button οnclick='getPrams3(${JSON.stringify(objParamsJson)})'>ArrayObj类型函数传值按钮</button>`;
        $("body").append(btn3);
        //ArrayObj类型自定义属性传值 JSON.stringify()转成JSON字符串直接拼接到自定义属性中,获取的时候用
        //that.getAttribute("data-a")直接获取						         
        var btn4 = `<br><button data-a='${objParamsJson}' οnclick='getPrams4(this)'>ArrayObj类型属性传值按钮</button>`;
        $("body").append(btn4);

        //强调一下无论什么方法拼接,事件函数括号中一定要带有引号不然渲染到页面会当做变量解析
        //这里试一下不带引号getPrams5()会发生什么,html里面会直接把strParams的值abc当做全局变量解析会报undefined
        var btn5 = `<br><button οnclick='getPrams5(${strParams})'>全局变量传值按钮</button>`;
        $("body").append(btn5);



    })

</script>



打印展示:

在这里插入图片描述


重点分析:

1,String类型传值直接拼接到getPrams("")引号中.

2,ArrayString类型传值直接拼接到getPrams(“”)引号中,打印出来是 1,5,a,b 自动转为String带,号分割符.

3,ArrayObj类型事件函数传值 JSON.stringify()转成JSON字符串直接拼接到事件函数getPrams(“”)引号中会造成双引号冲突,这时候可以去掉getPrams("")中的引号用JSON.stringify()再转一次就不会冲突,使用时再用JSON.parse(params)转回来.

4,ArrayObj类型自定义属性传值 JSON.stringify()转成JSON字符串直接拼接到自定义属性中,获取的时候用that.getAttribute("data-a")直接获取,使用时再用JSON.parse(params)转回来.

5,强调一下无论什么方法拼接,事件函数括号中一定要带有引号不然渲染到页面会当做变量解析,
这里试一下不带引号getPrams5()会发生什么,html里面会直接把strParams的值abc当做全局变量解析会报undefined.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值