Передача строки в атрибут функции onclick элемента динамически созданного элемента

Я пытаюсь передать строку в аргументах функции обработчика события 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);
}
6 голосов | спросил Mohamed Hussain 16 PMpTue, 16 Apr 2013 15:15:30 +040015Tuesday 2013, 15:15:30

6 ответов


0

Вы должны использовать правильный строковый синтаксис. Это

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

приведет к

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

Вы не можете использовать для onclick и параметры теста. Вместо этого используйте \ ".

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

Что приводит к

<a href='#' onclick='test("http://domain.tld")'>dd</a><br><br>
ответил AmShaegar 16 PMpTue, 16 Apr 2013 15:18:53 +040018Tuesday 2013, 15:18:53
0

Ваша проблема в том, что 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/>
ответил Sébastien Garmier 16 PMpTue, 16 Apr 2013 15:25:05 +040025Tuesday 2013, 15:25:05
0

Прямое использование:

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

вместо:

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

чтобы передать строку внутри метода.

ответил Surama Hotta 16 PMpTue, 16 Apr 2013 16:11:07 +040011Tuesday 2013, 16:11:07
0

Если я не понял вашего вопроса, вот ваш ответ;

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);
}
ответил Ahmet DAL 16 PMpTue, 16 Apr 2013 16:38:37 +040038Tuesday 2013, 16:38:37
0

Для передачи нескольких параметров вы можете привести строку, объединяя ее со значением ASCII, например, для одинарных кавычек мы можем использовать &#39;

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

тот же параметр, который вы можете передать в событие onclick(str). Это полезно в тех случаях, когда мы передаем несколько параметров. Работает с каждым браузер.

ответил PVIJAY 6 TueEurope/Moscow2016-12-06T08:02:37+03:00Europe/Moscow12bEurope/MoscowTue, 06 Dec 2016 08:02:37 +0300 2016, 08:02:37
0

Прямое использование:

test('elem[i].url') 

вместо:

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

чтобы передать строку внутри метода.

ответил priti 22 32017vEurope/Moscow11bEurope/MoscowWed, 22 Nov 2017 08:20:00 +0300 2017, 08:20:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132