-1

JavaScript を初めて使用するので、この問題の解決策を思い付くことができませんでした。

各「カートに追加」ボタンで同じ関数「AddtoCart」を呼び出したいと思います。私はこれを達成しましたが、インライン JavaScript を犠牲にして - 私が避けたいことです。

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

では、これを外部 JavaScript ファイルの一部として含めるにはどうすればよいでしょうか。これを 4 つの固有の項目すべてに適用できる必要があることを念頭に置いてください。

4

2 に答える 2

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);
}
于 2012-05-05T00:16:41.697 に答える
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に残しておくと(この後、バックエンドに送信すると思います)、危険であり、簡単に操作できます。

しかし、あなたの意図が単なるテストまたはそのようなものであれば、それは大丈夫です。

編集:この関数を呼び出すには、次のようにします。

onclick="AddToCart(1)"

1がおもちゃのIDである場合、おもちゃに応じて2,3...に変更する必要があります。

于 2012-05-05T00:19:20.387 に答える