从函数外部访问值:js和php生成的值

时间:2018-05-20 10:14:20

标签: javascript php html function select

Hello 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 :(得分:2)

不要使用var在函数内声明x,y和sum。通过使用var声明它,您将覆盖全局变量并创建局部变量。因此,您无法在其他函数中访问其值

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

答案 1 :(得分:1)

您可以使用此代码:

 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();
}

答案 2 :(得分:0)

如果您在以下函数中重新声明变量:

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

}

您在函数的context / visiblility中创建一个新的变量blub。 js解析器不知道你想要访问第一个定义的blub变量并在最近的上下文中搜索blub变量并首先在函数内找到blub。因此,将函数内部的变量重命名为:

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

您可以同时访问