2012-05-05 2 views
-1

Будучи новым для JavaScript, я не смог найти решение этой проблемы.JavaScript/DOM - Помогите удалить мой встроенный JavaScript

Я хочу, чтобы каждая кнопка «Добавить в корзину» вызывала ту же функцию «AddtoCart». Я достиг этого, но ценой встроенного JavaScript - чего бы я хотел избежать.

onclick= "AddToCart(document.getElementById('toy_title1').innerHTML,document.getElementById('toy_quantity1').value,document.getElementById('toy_price1').innerHTML)

Так как я бы добиться в том числе это как часть внешнего файла JavaScript, имея в виду, что я должен быть в состоянии применить это ко всем 4 уникальных предметов

+0

Я не могу найти ни одной проблемы, что это такое? –

+0

Вместо этой длинной строки кода я хотел бы, чтобы все 4 из моих кнопок вызывали только «AddtoCart();» без встроенного JavaScript уже на месте. –

+0

О, вот что я только что подумал. Извините, я не видел никаких проблем, потому что ваш код работает отлично, а JS/HTML не бросается на лицо ваших конечных пользователей. –

ответ

1

, то вы должны прочитать больше о addEventListener (стандарт) и attachEvent (IE)

//assume element means the button 
//you can use getElementsByTagName, getElementsByClassName, querySelectorAll etc. 
//to fetch your elements 

//DRY, store the operation in a function so it's reusabe and not written twice 
function thisFunction(){ 
    AddToCart(document.getElementById('toy_title1').innerHTML, 
     document.getElementById('toy_quantity1').value, 
     document.getElementById('toy_price1').innerHTML) 
} 

if(element.addEventListener){      //check if the standard is supported 
    element.addEventListener('click',function(){ //use it to add the handler 
     thisFunction(); 
    }); 
} else { 
    element.attachEvent('onclick',function(){  //else, we use IE's version 
     thisFunction(); 
    }, false); 
} 
+0

Но идентификатор игрушки может измениться, поэтому ему нужно будет передать параметры функции, чтобы изменить идентификаторы элементов, как он мог это сделать? – PedroSena

+0

@PedroSena сообщение не упоминал, и, кроме того, это домашнее задание. Прочтите тег домашней работы и что вы должны делать, когда он есть. – Joseph

1

Вы можете изменить ваши функции таким образом:

function AddToCart(toyId) { 
    var title = document.getElementById('toy_title'+toyId).innerHTML; 
    var quantity = document.getElementById('toy_quantity'+toyId).value; 
    var price = document.getElementById('toy_price')+toyId).innerHTML 
} 

Тогда на каждой кнопке вы просто передать игрушку в ID

Просто будьте осторожны о конфиденциальных данных, таких как цена, оставляя его на Javascript (я предположим, вы отправить его на заднем конце после этого) опасно , его можно легко манипулировать.

Но если ваше намерение - это просто испытание или что-то в этом роде, все в порядке.

EDIT: для вызова этой функции вы могли бы сделать что-то вроде этого:

onclick="AddToCart(1)" 

Где 1 это ID вашей игрушки, вы должны изменить его на 2,3 ... в зависимости от вашей игрушки.

+0

+1 для вашей скорости, примера и простоты. Я собирался предложить то же самое, но вы закончили свой ответ, прежде чем я даже начал: P. –

+0

Я ценю ваш ответ, однако, будучи новичком, я не знаю. :( Это школьный проект, поэтому меня не интересуют конфиденциальные данные: D –

+0

Что именно неясно? Что делается над функцией или как ее называть? – PedroSena

Смежные вопросы