Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我真的必须添加具有多个不同参数的多个事件侦听器吗?_Javascript_Button_Return_Arguments_Addeventlistener - Fatal编程技术网

Javascript 我真的必须添加具有多个不同参数的多个事件侦听器吗?

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

添加到购物车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参数传递到函数中,然后返回答案。这可能吗


谢谢大家

您不必为每个单独的按钮添加事件侦听器。根据您要执行的操作,您可以将按钮包装在一个
标记中,并向该标记添加一个侦听器,以便侦听所有按钮。但是,您需要确保按钮实际按下,而不仅仅是
。您可以看到一个示例

您不必为每个单独的按钮添加事件侦听器。根据您要执行的操作,您可以将按钮包装在一个
标记中,并向该标记添加一个侦听器,以便侦听所有按钮。但是,您需要确保按钮实际按下,而不仅仅是
。您可以看到一个示例

为什么它是
。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;

 }