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>
答案 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 =
}
您可以同时访问