在onclick函数的元素属性中传递字符串动态创建的元素

时间:2013-04-16 11:15:31

标签: javascript html

我正在尝试在动态创建的锚元素的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);
}

8 个答案:

答案 0 :(得分:19)

你必须使用正确的字符串sytax。此

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

将导致

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

你不能使用'for onclick和测试参数。使用\“而不是。

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

结果是

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

答案 1 :(得分: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/>

答案 2 :(得分:1)

直接使用:

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

而不是:

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

在方法中传递字符串。

答案 3 :(得分: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);
}

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:0)

直接使用:

test('elem[i].url') 

而不是:

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

在方法中传递字符串。

答案 6 :(得分:0)

var funcName = "SelectPickerBtnSelectEvent('" + str + "')";
$(".btn.dropdown-toggle.btn-light").attr("onclick", funcName);

答案 7 :(得分:0)

也许

可以使用元素上的数据属性来保存字符串。 然后在函数中检索数据。