如何在一个字符串中向JS函数发送1个以上的arg

how to send more than 1 arg to JS function within a string?

本文关键字:函数 JS 1个 arg 字符串 一个      更新时间:2023-09-26

updat 函数名不是问题所在(意外复制错误)问题是我在发送字符串!感谢mplungjan问题解决了!!

这是我的代码:

 $("#GVHistory").append("<tr><td>" + order.OrderID +"</td><td><a href='#dialogHistory' id='ShowDet' data-role='button' data-transition='pop' onclick='function(" + order.OrderID +"," + order.Total + ")'>Details</a></td></tr>");

我有一个JavaScript函数:

function fun(id,t) {
    $("#HistHead").empty();
    $("#HistHead").append(t + id);
}

当我发送1个参数时,它运行良好,但超过1个则失败。另外,数据滚动没有影响,有什么想法吗?

您的函数名为fun,而不是函数。请确保在onclick事件中使用正确的名称。

问候

在html中的onclick事件中,函数是"function",而函数被称为"fun"。

以下代码有效:

<!DOCTYPE html>
<html>
    <head>
    <script src="js/jquery.js"></script>
</head>
<body>
    <div id="HistHead">Test</div>
    <table id="GVHistory"></table>
    <script>
    $(document).ready(function(){
        order ={OrderID:12,Total:15};
        $("#GVHistory").append("<tr><td>" + order.OrderID +"</td><td><a href='#dialogHistory' id='ShowDet' data-role='button' data-transition='pop' onclick='fun(" + order.OrderID +"," + order.Total + ")'>Details</a></td></tr>");
    });
    function fun(id,t) {
        $("#HistHead").empty();
        $("#HistHead").append(t + id);
    }
    </script>
</body>

为了更好地理解,我想更详细地解释
让我们假设:秩序。OrderID="orderId1"和订单。总计="total100"

当您将此<tr>附加到DOM时,order.OrderIDorder.Total将附加到onclick函数,而不是变量。

您的onclick已呈现为onclick="fun(orderId1, total100)"。如果单击此选项,您将收到一个错误,因为变量orderId1和变量total100未定义。正确的解决方案是添加一些引号,得到两个字符串。您必须用''转义引号,否则引号将破坏您试图在第一个代码片段中附加的字符串。

内联调用click函数总是有点混乱,尤其是当您想要传递多个字符串或变量时。我总是采用自定义数据属性。data-xxx="xxx"交出一些东西。

$("#GVHistory").append("<tr><td>" + order.OrderID +"</td><td><a href='#dialogHistory' class='ShowDet ui-btn' data-transition='pop'  data-orderid='"+order.OrderID+"' data-ordertotal='"+order.Total+"'>Details</a></td></tr>");
$(".ShowDet").unbind("click").on("click", function (){
    var id = $(this).data("orderid");
    var t = $(this).data("ordertotal");
    $("#HistHead").empty().append(t + id);
});

针对data-role="button"的第二个问题
这个自定义jquery-mobile属性只有在第一次加载页面时位于DOM内部时才会起作用。如果你想动态地附加一些东西,你必须调用相应的小部件。对于按钮,您只需要调用$(".ShowDet").button()来初始化按钮标记。但是按钮的一个更简单的方法是使用css类来设置它们的样式。.ui-btn