Доступ к значению извне функции: сгенерированное значение js и php - PullRequest
0 голосов
/ 20 мая 2018

Привет, друзья, пользователи stackoverflow, я снова и снова пытаюсь получить доступ к переменной извне функции.Так что я знаю, что переменная обычно не может быть доступна извне функции, но ее объявление сначала вне функции или возвращение переменной должно дать мне доступ, но я не могу ее получить.Вот мой код:

<select class='select-style' onchange="selectModel(this)">
  <option></option>
   <?php
    $select_cassetta_name = "select * from cassetta order by cassetta_name ASC";
    $run_cassetta = mysqli_query($con, $select_cassetta_name);
     while($row=mysqli_fetch_array($run_cassetta)){
      $cassetta_id = $row['cassetta_id'];
      $cassetta_name = $row['cassetta_name'];
      $cassetta_price = $row['cassetta_price'];
      echo "<option value='$cassetta_price'>$cassetta_name</option>";
     }
   ?> 
</select>


<div>
  <p id="box"></p>
</div>

<div>
  Sides SUM = <span id="sides_sum"></span> <br>
  Value x Sides = <span id="final_price"></span>
</div>



<script>

  var x;
  var y;
  var z;
  var sum;

  function getSides() {
    var x = parseFloat(document.getElementById("side1").value);
    var y = parseFloat(document.getElementById("side2").value);
    var sum = document.getElementById("sides_sum").innerHTML = x + y;
  }

  function selectModel(selectObject) {
    var z = parseFloat(selectObject.value);
    var cassetta = document.getElementById("box").innerHTML = "You selected value: " + z;
    document.getElementById("final_price").innerHTML = z * sum;
  }

</script>

Ответы [ 3 ]

0 голосов
/ 20 мая 2018

Если вы переопределите переменную в функции, например:

var blub = ..
function xyz() {
   var blub = ....

}

, вы создадите новую переменную blub в контексте / видимости в функции.Анализатор js не знает, что вы хотите получить доступ к первой определенной переменной blub, и ищет ближайший контекст для переменной blub и сначала находит blub внутри функции.Поэтому переименуйте переменную внутри функции в что-то вроде:

var blub = ..
function xyz() {
   var blub2 = ....
   var blub_ = ...
   var blub_inner = 
}

, и вы получите доступ к обоим

0 голосов
/ 20 мая 2018

Вы можете использовать этот код:

 function getSides() {
   var x = parseFloat(document.getElementById("side1").value);
  var y = parseFloat(document.getElementById("side2").value);
  var sum = document.getElementById("sides_sum").innerHTML = x + y;
  return sum;
}

function selectModel(selectObject) {
  getSides();
  var z = parseFloat(selectObject.value);
  var cassetta = document.getElementById("box").innerHTML = "You selected value: " + z;
  document.getElementById("final_price").innerHTML = z * getSides();
}
0 голосов
/ 20 мая 2018

Не объявляйте x, y и sum внутри функции, используя var.Объявляя его с помощью var, вы переопределяете глобальную переменную и создаете локальную переменную.Таким образом, вы не можете получить доступ к его значению в другой функции

function getSides() {
    x = parseFloat(document.getElementById("side1").value);
    y = parseFloat(document.getElementById("side2").value);
    sum = document.getElementById("sides_sum").innerHTML = x + y;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...