9

我正在尝试在动态创建的锚元素的 onClick 事件处理函数的参数中传递一个字符串,请参阅小提琴http://jsfiddle.net/shmdhussain/bXYe4/

我无法将字符串传递给函数,但我能够将数字整数传递给函数。请帮助我。提前致谢。

html:

<DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>test</title>
        <link rel="stylesheet" href="mystyle.css" class="cssfx"/>

        <script src="/jquery.min.js"></script>
        <script src="colon.js"></script>
    </head>

    <body>

        <div class="mytest">

        </div>


    </body>
</html>
</html>

Javascript:

var elem=[  {"name":"husain","url":"http://google.com","age":21},
            {"name":"ismail","url":"http://yahoo.com","age":22},
            {"name":"nambi","url":"http://msn.com","age":23}
         ]

jQuery(function($){
    var str="";
    for(i=0;i<elem.length;i++){
        str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>"
        console.log(str);

    }
    $('.mytest').html(str);

});

function test(url){
    console.log("url is "+url);
}
4

8 回答 8

23

您必须使用正确的字符串语法。这

"<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>"

将导致

<a href='#' onclick='test('http://domain.tld')'>dd</a><br><br>

您不能将 ' 用于 onclick 和 test 的参数。使用 \" 代替。

"<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br><br>"

这导致

<a href='#' onclick='test("http://domain.tld")'>dd</a><br><br>
于 2013-04-16T11:18:53.130 回答
3

你的问题是,这str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br/><br/>";将返回一个字符串,如"<a href='#' onclick='test('your_url')'>dd</a><br/><br/>". 这将生成一个像这样的html:

<a href='#' onclick='test('your_url')'>dd</a><br/><br/>

在这种情况下,onclick 属性仅包含 'test('。

试试这个:

str+="<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br/><br/>";

这将生成一个像这样的html:

<a href='#' onclick='test("your_url")'>dd</a><br/><br/>
于 2013-04-16T11:25:05.360 回答
1

直接使用:

test('"+elem[i].url+"') 

代替:

'test('"+elem[i].url+"')' 

在方法中传递字符串。

于 2013-04-16T12:11:07.023 回答
1

如果我没有误解你的问题,这是你的答案;

var elem=[  {"name":"husain","url":"http://google.com","age":21},
    {"name":"ismail","url":"http://yahoo.com","age":22},
    {"name":"nambi","url":"http://msn.com","age":23}
]

jQuery(function($){
    var str="";
    for(i=0;i<elem.length;i++){
        var a =$('<a>',{href:'#',text:'dd'});
        a.click(function(e){
               test(elem[i].url)
        });
        $('.mytest').append(a).append($('</br>')).append($('</br>'));

    }
});

function test(url){
    console.log("url is "+url);
}
于 2013-04-16T12:38:37.173 回答
1

为了传递多个参数,您可以通过将字符串与 ASCII 值连接来转换字符串,例如,对于单引号,我们可以使用&#39;

var str= "&#39;"+ str+ "&#39;";

您可以将相同的参数传递给事件。这onclick(str)在我们传递多个参数的情况下很有帮助。它适用于每个浏览器。

于 2016-12-06T05:02:37.880 回答
0

直接使用:

test('elem[i].url') 

代替:

test('"+elem[i].url+"')

在方法中传递字符串。

于 2017-11-22T05:20:00.780 回答
0
var funcName = "SelectPickerBtnSelectEvent('" + str + "')";
$(".btn.dropdown-toggle.btn-light").attr("onclick", funcName);
于 2020-05-12T18:24:30.970 回答
0

也许相反,使用元素上的数据属性来保存字符串。然后在函数中检索数据。

于 2020-05-13T05:32:31.690 回答