如何在字符串中向JS函数发送超过1个arg?

时间:2016-01-09 12:41:37

标签: javascript function

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则失败。 再加上数据卷没有影响,有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您的功能名为有趣,而不是功能。请确保在onclick事件中使用正确的名称。

此致

答案 1 :(得分:0)

在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>

答案 2 :(得分:0)

为了更好地理解,我想更详细地解释 我们假设:order.OrderID =&#34; orderId1&#34;和order.Total =&#34; total100&#34;

在您将此<tr>附加到DOM的那一刻,order.OrderIDorder.Total会附加到您的onclick函数,而不是变量。

您的onclick已呈现给onclick="fun(orderId1, total100)"如果单击此按钮,则会出现错误,因为未定义变量orderId1和变量total100。正确的解决方案是添加一些引号,以获得两个字符串。您必须使用\来转义引号,否则引号将在您的第一个代码段中销毁您尝试追加的字符串。

调用内联单击函数总是有点乱,特别是如果你想交出多个字符串或变量。我总是采用自定义数据属性。 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移动属性只在第一次加载页面时才会在DOM内部执行。如果要动态附加某些内容,则必须调用相应的小部件。如果是按钮,您只需调用$(".ShowDet").button()以使按钮标记初始化。但是更简单的按钮方法是使用css类来设置它们的样式。 .ui-btn