JavaScript eval定义动态变量名及赋值教程

2020-11-09 11:12发布

/*简单代码,看懂eval动态变量定义的创建和使用*/
<html>
<head>
 
    <script type="text/javascript">
        eval("var input_id1;");
 
        input_id1 = 100;
        
        alert(input_id1);
    </script>
 
</head>
</html>

/*ASP.NET eval更强大的使用案例*/

/// <summary>

/// 后台定义动态变量名

/// </summary>

public void BindAutoComplete(string AjaxCompleteID, string AjaxCompleteText, string Placeholder, string ColArray, string TableName, string SelectorString, string SortExpression, string FilterString, string FilterColumnString, int TopCount, string Width)

{

    ViewState["ucAjaxComplete_ColArray_" + this.AjaxComplete.ClientID] = ColArray;

    ViewState["ucAjaxComplete_TableName_" + this.AjaxComplete.ClientID] = Utility.Web.Security.DESEncrypt(TableName);

    ViewState["ucAjaxComplete_SelectorString_" + this.AjaxComplete.ClientID] = Utility.Web.Security.DESEncrypt(SelectorString);

    ViewState["ucAjaxComplete_SortExpression_" + this.AjaxComplete.ClientID] = Utility.Web.Security.DESEncrypt(SortExpression);

    ViewState["ucAjaxComplete_FilterString_" + this.AjaxComplete.ClientID] = Utility.Web.Security.DESEncrypt(FilterString);

    ViewState["ucAjaxComplete_FilterColumnString_" + this.AjaxComplete.ClientID] = Utility.Web.Security.DESEncrypt(FilterColumnString);

    ViewState["ucAjaxComplete_TopCount_" + this.AjaxComplete.ClientID] = TopCount;

    ViewState["ucAjaxComplete_Width_" + this.AjaxComplete.ClientID] = Width;

    ViewState["ucAjaxComplete_AjaxCompleteText_" + this.AjaxComplete.ClientID] = AjaxCompleteText;

    ViewState["ucAjaxComplete_Placeholder_" + this.AjaxComplete.ClientID] = Placeholder;

    ViewState["ucAjaxComplete_AjaxCompleteID_" + this.AjaxComplete.ClientID] = "ajaxComplete" + AjaxCompleteID;

    ViewState["ucAjaxComplete_CallBackFunctionName_" + this.AjaxComplete.ClientID] = "ajaxComplete" + AjaxCompleteID + "CallBack";

    ViewState["ucAjaxComplete_KeyTabCallBackFunctionName_" + this.AjaxComplete.ClientID] = "ajaxComplete" + AjaxCompleteID + "KeyTabCallBack";

}

/// <summary>
/// JavaScript读取后台变量并写入到eval模块中
/// JavaScript 小知识点:JavaScript换行拼接使用反斜杠 \
/// </summary>
<script type="text/javascript">
    eval("var <%=ViewState["ucAjaxComplete_AjaxCompleteID_" + this.AjaxComplete.ClientID]%>;");
    $(document).ready(function () {
        var strAjaxComplete = ("\
                var col = [], coltext = '<%=ViewState["ucAjaxComplete_ColArray_" + this.AjaxComplete.ClientID]%>', colsplit;\
                colsplit = coltext.split(',');\
                for (var i = 0; i < colsplit.length; i++) {\
                    col.push(colsplit[i]);\
                }\
                <%=ViewState["ucAjaxComplete_AjaxCompleteID_" + this.AjaxComplete.ClientID]%> = $('#<%=this.AjaxComplete.ClientID%>').tautocomplete({\
                    width: '<%=ViewState["ucAjaxComplete_Width_" + this.AjaxComplete.ClientID]%>',\
                    placeholder: '<%=ViewState["ucAjaxComplete_Placeholder_" + this.AjaxComplete.ClientID]%>',\
                    cleanspelchar: true,\
                    barcode:false,\
                    columns: col,\
                    data: function () {\
                        var filterData = [];\
                        $.ajax({\
                            url: '/WebServices/AutoComplete.asmx/GetAjaxCompleteData',\
                            type: 'POST',\
                            dataType: 'json',\
                            async: false,\
                            data: { Col_1: '<%=ViewState["ucAjaxComplete_TableName_" + this.AjaxComplete.ClientID]%>', Col_2:  '<%=ViewState["ucAjaxComplete_SelectorString_" + this.AjaxComplete.ClientID]%>', Col_3:  '<%=ViewState["ucAjaxComplete_SortExpression_" + this.AjaxComplete.ClientID]%>', Col_4:  '<%=ViewState["ucAjaxComplete_FilterString_" + this.AjaxComplete.ClientID]%>', Col_5:  '<%=ViewState["ucAjaxComplete_FilterColumnString_" + this.AjaxComplete.ClientID]%>', Col_6: <%=ViewState["ucAjaxComplete_AjaxCompleteID_" + this.AjaxComplete.ClientID]%>.searchdata(), Col_7:  <%=ViewState["ucAjaxComplete_TopCount_" + this.AjaxComplete.ClientID]%> },\
                            success: function (data) {\
                                for (var i = 0; i < data.length; i++) {\
                                    filterData.push(data[i]);\
                                }\
                            }\
                        });\
                        return filterData;\
                    },\
                    onchange: function () {\
                        <%=ViewState["ucAjaxComplete_CallBackFunctionName_" + this.AjaxComplete.ClientID]%>(<%=ViewState["ucAjaxComplete_AjaxCompleteID_" + this.AjaxComplete.ClientID]%>);\
                    },\
                    onkeytab: function () {\
                        <%=ViewState["ucAjaxComplete_KeyTabCallBackFunctionName_" + this.AjaxComplete.ClientID]%>(<%=ViewState["ucAjaxComplete_AjaxCompleteID_" + this.AjaxComplete.ClientID]%>);\
                    }\
                });\
                <%=ViewState["ucAjaxComplete_AjaxCompleteID_" + this.AjaxComplete.ClientID]%>.setdata('<%=ViewState["ucAjaxComplete_AjaxCompleteText_" + this.AjaxComplete.ClientID] %>');\
        ");
        eval(strAjaxComplete);
    });
</script>
/// <summary>
/// JavaScript编译后代码
/// </summary>
<script type="text/javascript">
eval("var ajaxComplete;");
$(document).ready(function () {
var strAjaxComplete = ("\
                var col = [], coltext = '[物资名称],[规格],[条码]', colsplit;\
                colsplit = coltext.split(',');\
                for (var i = 0; i < colsplit.length; i++) {\
                    col.push(colsplit[i]);\
                }\
                ajaxComplete = $('#ctl00_cph_ucInDepotEdit_ucAjaxAutocompleteTable_AjaxComplete').tautocomplete({\
                    width: '300px',\
                    placeholder: '请输入物资名称、规格或条码查询',\
                    cleanspelchar: true,\
                    barcode:false,\
                    columns: col,\
                    data: function () {\
                        var filterData = [];\
                        $.ajax({\
                            url: '/WebServices/AutoComplete.asmx/GetAjaxCompleteData',\
                            type: 'POST',\
                            dataType: 'json',\
                            async: false,\
                            data: { Col_1: '6E3A20C557A03736AF68C38C991B2454C14D3B264E98D297', Col_2:  '0B982EC405AA874DB04ED8057719223FF996393B13F1259C24A56B8E40233DF659E78160C6B35AC2991409C9B01FDABD', Col_3:  '0B982EC405AA874D9BE69B1002DF9D65', Col_4:  'B71AE2D1C2C554260035E8E015084A8427209F3167FAE41232C3319177633C05', Col_5:  '6853E3874A3A6B264C1DC36088095A25', Col_6: ajaxComplete.searchdata(), Col_7:  10 },\
                            success: function (data) {\
                                for (var i = 0; i < data.length; i++) {\
                                    filterData.push(data[i]);\
                                }\
                            }\
                        });\
                        return filterData;\
                    },\
                    onchange: function () {\
                        ajaxCompleteCallBack(ajaxComplete);\
                    },\
                    onkeytab: function () {\
                        ajaxCompleteKeyTabCallBack(ajaxComplete);\
                    }\
                });\
                ajaxComplete.setdata('');\
        ");
eval(strAjaxComplete);
});
</script>

作者:China_Lzw
链接:https://blog.csdn.net/qq285679784/article/details/70670025
来源:CSDN
著作权归作者所有,转载请联系作者获得授权,切勿私自转载。