Переменная «x», которую я упоминаю вне функции, имеет некоторую проблему, я думаю. Функция не обращается к переменной, не знаю почему - PullRequest
0 голосов
/ 18 февраля 2020

Переменная «x», которую я упоминаю вне функции, имеет некоторую проблему, я думаю. Функция не обращается к переменной, не знаю почему. вот моя javascript функция ниже, если кому-то требуется мой html код, который также может предоставить

HTML Snippet

<div class="row"> 
  <div class="col lg-3"></div> 
  <div class="col lg-6 text-center"> 
     <div id="1">shahmir</div> </div>
     <div class="col lg-3"></div> 
  </div>
</div>

<script>
    function add();
    var x=1;
    function add(x){
        var a=document.getElementById("input").value;
        
        x++;
        if(x==1)document.getElementById("1").innerHTML=a;
    }
</script>

Ответы [ 4 ]

0 голосов
/ 18 февраля 2020

Вы следите за внешней x переменной, объявив параметр для вашей функции с тем же именем.

Внутри функции x относится к параметру, а не к глобальному переменная.

У вас также есть объявление функции без тела:

function add();

Если вы хотите вызвать функцию add, вы просто делаете: add().

Извлеките параметр x из объявления функции. Кроме того, ваше состояние никогда не будет верным. Так как вы инициализируете x в 1 и увеличиваете его перед тестированием, оно всегда будет как минимум 2.

Это вероятно то, что вы пытаетесь сделать (трудно сказать, но по крайней мере, это будет что-то ):

<script>
    var x=0;
    function add(){
        var a=document.getElementById("input").value;
        x++;
        if(x==1)document.getElementById("1").innerHTML=a;
    }
    add();
</script>
0 голосов
/ 18 февраля 2020

У вас есть две переменные с одинаковым именем x. Когда вы увеличиваете его внутри функции «add», он принимает значение параметра «x», а не определенную вами переменную «x».

Если вы хотите исправить этот код. Выполните следующие действия: - Переместите объявление x перед вызовом функции - Замените локальный параметр x на y - Удалите ключевое слово функции при вызове функции

var x = 1;
add();

function add(y) {
  var a = document.getElementById("input").value;

  x++; // x will become 2, so check  for 2 in next statement.
  if (x === 2)
    document.getElementById("1").innerHTML = a;
}
0 голосов
/ 18 февраля 2020

Вы передаете x в функцию. Это создаст новую переменную с именем x, которая будет использоваться внутри функции. Он отличается от var x, определенного выше.

Измените на

<script>
  var x = 1;

  function add() {
    var a = document.getElementById("input").value;

    x++;
    if (x == 1) document.getElementById("1").innerHTML = a;
  }

  function add();
</script>

или если вы хотите использовать эту функцию в других местах.

<script>
  var x = 1;

  function add(x) {
    var a = document.getElementById("input").value;

    x++;
    if (x == 1) document.getElementById("1").innerHTML = a;
    return x;
  }

  x = add(x);
</script>
0 голосов
/ 18 февраля 2020

Функция не может видеть внешнюю x, потому что она имеет свою собственную переменную x, полученную в качестве аргумента, которая называется затенением переменной (https://en.wikipedia.org/wiki/Variable_shadowing)

I я дико догадываюсь, что ты пытаешься сделать:

<script>
    function add(){
      var a = document.getElementById('input').value;

      document.getElementById('1').innerHTML += ('<br />' + a);
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...