Javascript 我真的必须添加具有多个不同参数的多个事件侦听器吗?
添加到购物车25.99 添加到购物车68.99 添加到购物车6.99 税后价格 var btn=document.querySelector(“按钮”); var balls=document.querySelectorAll(“#balls”); var racket=document.querySelector(“#racket”); var grip=document.querySelector(“#grip”); btn.addEventListener('click',function(){ calcPrice(球); }) btn.addEventListener('click',function(){ 球拍; }) btn.addEventListener('click',function(){ calcPrice(grip); }) //*****************************************使用INNERHTML和 然后控制十进制长度****************************** 功能计算(元素){ var price=element.innerHTML; var tax=0.175;//税率 var fullPrice=(价格*税收)+浮动(价格); fullPrice=fullPrice.toString(); 如果(fullPrice.charAt(5)=“5”){ fullPrice=fullPrice.slice(0,5)+“4”; } fullPrice=编号(fullPrice); var totalPrice=fullPrice.toFixed(2); element.innerHTML=总价; 返回总价; } 如何缩短此代码?这样我就不必添加多个事件侦听器了,因为跨度越大?比如说,如果我计划添加30个不同的跨度,我肯定会有30个不同的事件侦听器。我想为所有不同的跨度添加一个事件侦听器,然后将holding参数传递到函数中,然后返回答案。这可能吗Javascript 我真的必须添加具有多个不同参数的多个事件侦听器吗?,javascript,button,return,arguments,addeventlistener,Javascript,Button,Return,Arguments,Addeventlistener,添加到购物车25.99 添加到购物车68.99 添加到购物车6.99 税后价格 var btn=document.querySelector(“按钮”); var balls=document.querySelectorAll(“#balls”); var racket=document.querySelector(“#racket”); var grip=document.querySelector(“#grip”); btn.addEventListener('click',function
谢谢大家您不必为每个单独的按钮添加事件侦听器。根据您要执行的操作,您可以将按钮包装在一个
标记中,并向该标记添加一个侦听器,以便侦听所有按钮。但是,您需要确保按钮实际按下,而不仅仅是
。您可以看到一个示例您不必为每个单独的按钮添加事件侦听器。根据您要执行的操作,您可以将按钮包装在一个
标记中,并向该标记添加一个侦听器,以便侦听所有按钮。但是,您需要确保按钮实际按下,而不仅仅是
。您可以看到一个示例为什么它是。querySelectorAll(“#balls”)
?id必须是唯一的(并且calcPrice()
只能处理单个元素)。只需在一个事件处理程序中执行三个调用,然后在事件处理程序中获取元素,或者将选择器传递到calcPrice()
并在那里获取元素。谢谢,我在学习中还是新手,querySelector All是一个错误,我不知道为什么会这样,打字错误/脑筋急转弯,你能给我一个在一个最近的处理程序中进行3次呼叫的例子吗?我知道你的意思了?我会接受你的回答,并向你表示衷心的感谢。使用id列表,迭代该列表,使用当前id获取元素,使用当前元素调用calcPrice()
。向您感兴趣的所有
元素添加一个公共类,使用获取它们。queryselectoral(“.”
),迭代元素,为每个元素调用calcPrice()
。使用.querySelectorAll()
获取#styleDiv
中的所有
元素,迭代元素,为每个元素调用calcPrice()
。。。为什么是.querySelectorAll(“#balls”)
?id必须是唯一的(并且calcPrice()
只能处理单个元素)。只需在一个事件处理程序中执行三个调用,然后在事件处理程序中获取元素,或者将选择器传递到calcPrice()
并在那里获取元素。谢谢,我在学习中还是新手,querySelector All是一个错误,我不知道为什么会这样,打字错误/脑筋急转弯,你能给我一个在一个最近的处理程序中进行3次呼叫的例子吗?我知道你的意思了?我会接受你的回答,并向你表示衷心的感谢。使用id列表,迭代该列表,使用当前id获取元素,使用当前元素调用calcPrice()
。向您感兴趣的所有
元素添加一个公共类,使用获取它们。queryselectoral(“.”
),迭代元素,为每个元素调用calcPrice()
。使用.querySelectorAll()
获取#styleDiv
中的所有
元素,迭代元素,为每个元素调用calcPrice()
。。。
<body>
<div id = "styleDiv">
<p> add to cart <span id = "balls"> 25.99 </span> </p>
<p> add to cart <span id= "racket"> 68.99 </span> </p>
<p> add to cart <span id= "grip"> 6.99 </span> </p>
<button> price after tax </button>
</div>
<script>
var btn = document.querySelector("button");
var balls = document.querySelectorAll('#balls');
var racket = document.querySelector('#racket');
var grip = document.querySelector('#grip');
btn.addEventListener( 'click', function() {
calcPrice(balls);
})
btn.addEventListener( 'click', function() {
calcPrice(racket);
})
btn.addEventListener( 'click', function() {
calcPrice(grip);
})
//***************************************** READING A NUMBER INSIDE THE PRGRAM WITH INNERHTML AND
THEN CONTROLLING DECIMAL LENGTH ******************************
function calcPrice(element) {
var price = element.innerHTML;
var tax = 0.175;// tax rate
var fullPrice = (price * tax) + parseFloat(price);
fullPrice = fullPrice.toString();
if (fullPrice.charAt(5) == "5") {
fullPrice = fullPrice.slice(0,5)+ "4";
}
fullPrice = Number(fullPrice);
var totalPrice = fullPrice.toFixed(2);
element.innerHTML = totalPrice;
return totalPrice;
}