簡體   English   中英

將數組傳遞給javascript onclick函數

[英]Passing an array to a javascript onclick function

我有一個數組想要傳遞給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);
}

您將其作為帶有單引號的字符串傳遞,您應該將其作為對象傳遞。

onclick="edit_event(event_data);" 
    <!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>

我看到您正在使用jQuery,您可以執行以下操作:

HTML

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

JS

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

我最終采用了這種方法。

使事件數據成為全局變量。

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"] ) {
                  .
                  .
                  .
            }
         }
     }

您通常不想在html中指定事件。 而是分配一個click事件:

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();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM