JSにおけるonclick事件の一つのピット

7027 ワード

今日出会ったこの問題はもとから理解していません.ただ一つの融通性のある方法でこのバグを解決しました.

<a href="javascript:void()" onclick="alertErrorMsg(${declareNumber},${aaa})">    a> 

<a href="javascript:void()" onclick="alertErrorMsg(${declareNumber})">    a>
//        ,         
function alertErrorMsg(declareNumber){
        var url = "xxxxxxxxx";
        var datas = {"declareNumber":declareNumber,_:new Date().getTime()};
        $.ajax({
            url:url,
            data:datas,
            type:"POST",
            success:function(data){
                var result = JSON.parse(data)["result"];
                //layer.alert(typeof JSON.parse(data)["errorList"]);
                var list = JSON.parse(data)["errorList"];
                if(result == 1){//  ,   json   .
                    var str = "";
                    for(var i=0;i1)+"."+list[i]+"
"
; } layer.open({ type: 1, title:" ", skin: 'layui-layer-rim', // area: ['600px', '400px'], // content: str }); }else if(result == 2){// layer.alert(' !!!'); }else{// , layer.alert(' !!!'); } }, error:function(){ layer.alert(' !!!'); } }); }
A状態で、私が入ってきたのは二つのStringタイプです.onclickは大丈夫です.B状態で、私が入ってきたのはStringタイプで、onclickにエラーメッセージがありました.
//   fff30368a2774ee69ce41968a473a8ca      
Uncaught ReferenceError: fff30368a2774ee69ce41968a473a8ca is not defined
ここで私は会社のトップと長い間話し合ったが、手がかりは一つもなかった.
最後にバグを解決して記録するしかないです.
解決方法:

<a href="javascript:void()" id="errorMsg" class="btn btn-danger">    a> 

<input type="hidden" id="declareNumber" value="${declareNumber }"/>
    // dom           a        ,       js       
    //                  
    $(function(){
        $("#errorMsg").click(function(){
            alertErrorMsg($("#declareNumber").val());
        });
    });
    //           js        ,                 class
    $(function(){
        //$("#sample-table")                   
        //on("click",,".numberClass",function(){});    id sample-table        class numberClass   ,         ,        alertErrorMsg()  
        $("#sample-table").on("click",".numberClass",function(){
            alertErrorMsg($(this).attr("name"));
        });
    });
以上はこの問題の解決方法ですが、もし原理を知っている方がいたら、コメントで教えてください.ありがとうございます.