Проблема с попыткой сделать функцию динамической, она не читает мне параметр функции

Сначала я опубликую исходный код, который довольно жестко закодирован и содержит кучу строк.

Итак, идея заключается в отслеживании очков для игры, поэтому вы просто записываете во входные данные новые очки и нажимаете «Отдых» или «Добавить» в зависимости от счета каждого раунда, и он будет добавлен к счету игрока.

ОСНОВНОЙ КОД HTML:

      <section id="theGame"class="started-game hide">
       <div class="playing-player">
        <h3 id="p1"></h3>
             <div class=" scoresFather ">
            <p class="p1-score score">0</p>
            <input type="number"  id="newpoint-p1" class="newpoint">
            <input type="button" value="+" id="add-p1" class="add">
            <input type="button" value="-" id="rest-p1" class="rest">
             </div>
       </div>
       <div class="playing-player a">
        <h3 id="p2"></h3>
             <div class=" scoresFather ">
            <p class="p2-score score">0</p>
            <input type="number"  id="newpoint-p2" class="newpoint">
            <input type="button" value="+" id="add-p2" class="add">
            <input type="button" value="-" id="rest-p2" class="rest">
             </div>
       </div>
       <div class="playing-player">
        <h3 id="p3"></h3>
            <div class=" scoresFather hide">
            <p class="p3-score score">0</p>
             <input type="number"  id="newpoint-p3" class="newpoint">
             <input type="button" value="+" id="add-p3" class="add">
             <input type="button" value="-" id="rest-p3" class="rest">
             </div>
       </div>
       <div class="playing-player">
        <h3 id="p4"></h3>
            <div class=" scoresFather hide">
             <p class="p4Score score">0</p>
             <input type="number"   id="newpointP4"class="newpoint">
             <input type="button" value="+" id="add-p4" class="add">
             <input type="button" value="-" id="rest-p4" class="rest">
            </div>
         </div>
       <input type="button" value="Inicio" id="go-home" class="home" onClick="window.location.reload(true)">
    </section>


MAIN CODE JS : 

  //Add points and congrats the winner
 //p1
 p1Add.addEventListener('click', function() { 
    let p1Score = document.querySelector('.p1-score') ;
    let p1NewPoint = document.querySelector('#newpoint-p1') ;
      if(parseInt(p1NewPoint.value)){ 
      p1Score.textContent = parseInt(p1Score.textContent) + parseInt(p1NewPoint.value)
      p1NewPoint.value = '';}
      else {
        p1NewPoint.value = '';};
     changeColor(p1Score)

   });

   p1Rest.addEventListener('click', function() {
    let p1Score = document.querySelector('.p1-score') ;
    let p1NewPoint = document.querySelector('#newpoint-p1') ;
    if(parseInt(p1NewPoint.value)) {
    p1Score.textContent = parseInt(p1Score.textContent) - parseInt(p1NewPoint.value)
    p1NewPoint.value = '';}
    else {
        p1NewPoint.value = '';}
         changeColor(p1Score)

    });

    //P2
    p2Add.addEventListener('click', function() { 
        let p2Score = document.querySelector('.p2-score') ;
        let p2NewPoint = document.querySelector('#newpoint-p2') ;
          if(parseInt(p2NewPoint.value)){ 
          p2Score.textContent = parseInt(p2Score.textContent) + parseInt(p2NewPoint.value)
          p2NewPoint.value = '';} 
        else {
            p2NewPoint.value = '';}
             changeColor(p2Score)

        });
    
       p2Rest.addEventListener('click', function() {
        let p2Score = document.querySelector('.p2-score') ;
        let p2NewPoint = document.querySelector('#newpoint-p2') ;
        if(parseInt(p2NewPoint.value)) {
        p2Score.textContent = parseInt(p2Score.textContent) - parseInt(p2NewPoint.value)
        p2NewPoint.value = ''; }
        else {
            p2NewPoint.value = '';}
             changeColor(p2Score)

        });        
//p3
p3Add.addEventListener('click', function() { 
    let p3Score = document.querySelector('.p3-score') ;
    let p3NewPoint = document.querySelector('#newpoint-p3') ;
      if(parseInt(p3NewPoint.value)){ 
      p3Score.textContent = parseInt(p3Score.textContent) + parseInt(p3NewPoint.value)
      p3NewPoint.value = '';}
      else {
        p3NewPoint.value = '';}
         changeColor(p3Score)

    });    

   p3Rest.addEventListener('click', function() {
    let p3Score = document.querySelector('.p3-score') ;
    let p3NewPoint = document.querySelector('#newpoint-p3') ;
    if(parseInt(p3NewPoint.value)) {
    p3Score.textContent = parseInt(p3Score.textContent) - parseInt(p3NewPoint.value)
    p3NewPoint.value = ''; }
    else {
        p3NewPoint.value = '';}
         changeColor(p3Score)

    });    

  p4Add.addEventListener('click', function() {
    let p4Score = document.querySelector('.p4Score') ;
    let p4NewPoint = document.querySelector('#newpointP4') ;
      if(parseInt(p4NewPoint.value)){ 
      p4Score.textContent = parseInt(p4Score.textContent) + parseInt(p4NewPoint.value)
      p4NewPoint.value = '';}
      else {
        p4NewPoint.value = '';}
         changeColor(p4Score)
        ;
    })

//P4
   p4Rest.addEventListener('click', function() {
    let p4Score = document.querySelector('.p4Score') ;
    let p4NewPoint = document.querySelector('#newpointP4') ;
    if(parseInt(p4NewPoint.value)) {
    p4Score.textContent = parseInt(p4Score.textContent) - parseInt(p4NewPoint.value)
    p4NewPoint.value = ''; }
    else {
        p4NewPoint.value = '';}
     changeColor(p4Score)
     
    });        
  

 const addButton = document.querySelector('.add');
const restButton = document.querySelector('.rest');
function changeColor(e){ 
    let i = parseInt(e.textContent)
        if (i > 50){
        e.style.color = 'red'}
        else if(i < 5) {
            e.style.color = 'green'
        }
        else {e.style.color = 'black'}
      };


Итак, он работает правильно, но выглядит не очень хорошо для проекта портфолио, я попытался сделать это динамически с помощью следующего кода, но я изо всех сил пытаюсь:

Неудачный новый код js:

поэтому идея состоит в том, чтобы просто сделать этот код для каждого игрока, вместо того, чтобы повторять весь код выше. но этот код продолжает выдавать мне ошибку p4Score и newpointP4 не определены.

      //   p4Add.addEventListener('click', addFunction(p4Score,newpointP4));
    //   p4Rest.addEventListener('click', restFunction(p4Score,newpointP4));
         function addFunction(e,i){ 
        let es = `.` + e;
        let is = `#` + i;
        let pScore = document.querySelector(es)
        let inputNUmber= document.querySelector(is)
        if(parseInt(inputNUmber.value)) {
          pScore.textContent = parseInt(pScore.textContent) - parseInt(inputNUmber.value)
          inputNUmber.value = ''; }
        else {
          inputNUmber.value = '';}
        }

        function restFunction(e,i){ 
         let es = `.` + e;
        let is = `#` + i;
        let pScore = document.querySelector(es)
        let inputNUmber= document.querySelector(is)
            if(parseInt(inputNUmber.value)) {
              pScore.textContent = parseInt(pScore.textContent) - parseInt(inputNUmber.value)
              inputNUmber.value = ''; }
            else {
              inputNUmber.value = '';}
            }

0 ответов

Другие вопросы по тегам