Passage d'un tableau à un javascript onclick function
J'ai un tableau que je veux passer à un javascript onclick function.
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);
- Je envoyer ce tableau dans l'événement onclick d'un bouton.
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);
Le onclick fonction n'est pas appelée du tout avec ce code. Est-il une façon différente de faire appel de cette fonction avec le event_data tableau?
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);
}
- O_o Pourquoi utilisez-vous
push
, quand vous pouvez créer un tableau avec tous les éléments à l'aide devar event_data = [event_id, event_title, ...];
? - Vous semblez être à l'aide de jQuery, alors pourquoi êtes-vous en ligne de gestionnaires d'événements dans votre code html? jQuery événement méthodes de reliure comme
.on()
avoir un mécanisme permettant de passer des données à un gestionnaire d'événement. (Si vous utilisez "Afficher la Source" dans votre navigateur, vous allez voir pourquoi votre méthode actuelle ne fonctionne pas.)
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage dans comme une chaîne de caractères avec des guillemets simples, vous devriez être en passant que l'objet.
Je vois que vous êtes à l'aide de jQuery, vous pourriez faire quelque chose comme ceci:
Html
JS
J'ai fini avec cette approche.
Faire les événements de données à une variable globale.
Passer event_id à la edit_event() fonction.
Obtenir les données de l'événement sélectionné pour event_id dans le edit_event fonction.
D'habitude vous ne souhaitez pas spécifier les événements dans votre code html. Au lieu de cela, affecter un événement click: