将数组传递给javascript onclick函数

时间:2012-03-08 20:41:39

标签: javascript jquery

我有一个数组,我想传递给javascript onclick函数。

                var event_data = new Array();
                event_data.push(event_id);
                event_data.push(event_title);
                event_data.push(channel_id);
                event_data.push(channel_name);
                event_data.push(channel_onclick);
                event_data.push(event_site);
                event_data.push(event_url);
                event_data.push(event_onclick);
                event_data.push(start_date);
                event_data.push(start_time);
                event_data.push(end_date);
                event_data.push(end_time);
                event_data.push(event_notes);

我在按钮的onclick事件中发送该数组。

var span_string = '<span id=\"dt'+event_id+'\">'+print_span+'<br/><button href="#" onclick="edit_event('+event_data+');" style="width: 49px;">Edit</button><button href="#" onclick="delete_event();" style="width: 49px;">Delete</button></span>';
var event_id_string = 'mn'+event_id;
$('#'+event_id_string).append(span_string);

该代码根本不调用onclick函数。有没有不同的方法用event_data数组调用该函数?

function edit_event (event_data) {
/* function edit_event () { */
    alert ('edit event'); 
    var event_id = event_data[0];
    var event_title = event_data[1];
    var channel_id = event_data[2];
    var channel_name = event_data[3];
    var channel_onclick = event_data[4];
    var event_site = event_data[5];
    var event_url = event_data[6];
    var event_onclick = event_data[7];
    var start_date = event_data[8];
    var start_time = event_data[9];
    var end_date = event_data[10];
    var end_time = event_data[11];
    var event_notes = event_data[12];

    var alert_string = 'event id '+event_id+'<br/>'+
    'event title '+event_title+'<br/>'+
    'channel id '+channel_id+'<br/>'+
    'channel name '+channel_name+'<br/>'+
    'channel onclick '+channel_onclick+'<br/>'+
    'event site '+event_site+'<br/>'+
    'event url '+event_url+'<br/>'+
    'event onclick '+event_onclick+'<br/>'+
    'start date '+start_date+'<br/>'+
    'start time '+start_time+'<br/>'+
    'end date '+end_date+'<br/>'+
    'end time '+end_time+'<br/>'+
    'notes '+event_notes+'<br/>';

    alert (alert_string);
}

5 个答案:

答案 0 :(得分:2)

您将其作为带单引号的字符串传递,您应该将其作为对象传递。

onclick="edit_event(event_data);" 

答案 1 :(得分:1)

我看到你正在使用jQuery,你可以这样做:

<强> HTML

<span id="mySpan">Stuff</span>

JS

$('#mySpan').click(function(){
    edit_event(event_data);
});

答案 2 :(得分:1)

我最终采用了这种方法。

将事件数据设为全局变量。

var events_data;

将event_id传递给edit_event()函数。

var span_string = '<span id=\"dt'+event_id+'\">'+print_span+'<br/><button href="#" onclick="edit_event(\''+event_id+'\');" style="width: 49px;">Edit</button><button href="#" onclick="delete_event();" style="width: 49px;">Delete</button></span>';

在edit_event函数中获取所选event_id的事件数据。

    function edit_event (event_id) {
        for ( var i=0; i<events_data.event_id.length; i++ ) { 
            var site = "";
            var onclick =  "";
            if ( event_id == events_data.event_id[i]["0"] ) {
                  .
                  .
                  .
            }
         }
     }

答案 3 :(得分:1)

    <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>json pass</title>
        <script type="text/javascript" src="ga/jquery.min.js"></script>

<script type="text/javascript">
                var mydata =    [{ 
                            newsid: '10001', 
                            sectionName : 'SLIDESHOW',
                            title : 'The picture of slide show..',
                            slideShow : true,
                            slideShowID : [ 
                                            "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.jpg", 
                                            "gallery-1.jpg", "gallery-2.jpg", "gallery-3.jpg", "gallery-4.jpg", "gallery-5.jpg", "gallery-6.jpg", "gallery-7.jpg"
                                          ],
                            level : 0
                        }];

            function testMyFn(fnData) 
            {   
                $.each(fnData, function (key, value) {
                    alert(value);
                });
            }               

            $(function(){
                $('#myFnDiv').html("<a href='#' onclick='testMyFn(mydata[0].slideShowID);' >Get Test fn</a>")   
            });

</script>
</head>
<body>

<div id="myFnDiv">dsd</div>

</body>
</html>

答案 4 :(得分:0)

您通常不希望在html中指定事件。而是分配一个点击事件:

var event_data = ...;
$('#dt' +event_id).click(function(e){

  // put your click logic here

  // now you can access your array here by closure
  event_data.doSomething();
};