javascript - 我怎样才能使我的 var 更改为与下拉菜单中的值相同的值?
问题描述
我有一些代码可以绘制一个参数圆和一个 var 来指示它由多少个点组成。根据我在下拉菜单中选择的选项,我想不出任何方法来更改 var。
<!-- Dropdown -->
<select id="myList" onchange="PointsAmount()">
<option>2</option>
<option>4</option>
<option>8</option>
<option>16</option>
<option>32</option>
<option>64</option>
<option>128</option>
</select>
var points = 16;
var step = 2*Math.PI/points;
var h = 150;
var k = 150;
var r = 50;
function PointsAmount(){
var points = document.getElementById("myList").value;
}
//Circle draw
ctx.beginPath();
for(var theta=0; theta < 2*Math.PI; theta+=step){
var x = h + r*Math.cos(theta);
var y = k - r*Math.sin(theta);
ctx.lineTo(x,y);
}
ctx.closePath();
ctx.stroke();
解决方案
您正在使用var points = document.getElementById("myList").value;
. 您所做的基本上是points
在函数内部重新定义。您需要做的就是var
从行首删除单词,它会按预期工作。
var points = 16;
var step = 2 * Math.PI / points;
var h = 150;
var k = 150;
var r = 50;
function PointsAmount() {
points = document.getElementById("myList").value;
console.log(points);
}
<select id="myList" onchange="PointsAmount()">
<option>2</option>
<option>4</option>
<option>8</option>
<option>16</option>
<option>32</option>
<option>64</option>
<option>128</option>
</select>
您可以通过调用函数以在每次值更改时打印点的值来仔细检查您之前所做的事情:
var points = 16;
var step = 2 * Math.PI / points;
var h = 150;
var k = 150;
var r = 50;
function PointsAmount() {
var points = document.getElementById("myList").value;
console.log('inner var points=' + points);
printPoints();
}
function printPoints() {
console.log('global var points=' + points);
}
<!-- Dropdown -->
<select id="myList" onchange="PointsAmount()">
<option>2</option>
<option>4</option>
<option>8</option>
<option>16</option>
<option>32</option>
<option>64</option>
<option>128</option>
</select>
您可以看到 的全局定义points
始终为 16,并且您在那里定义的内部函数变量正在发生变化,而不影响全局变量。这就是作用域的概念。只存在于它的var points
范围之内,PointsAmount
而不存在于它的范围之外。
推荐阅读
- xamarin.forms - 更改 RelativeLayout 的常量值
- python - 我在调试代码时得到了结果,但是当我使用 eclipse IDE 在 python 中运行代码时看到错误
- c# - 带有 ShowUpDown 控件的 DateTimePicker 不会随月份增加年份
- database-design - 在 RDBMS 中以字节码的形式存储数据
- sql - Sql Server - 选择内的变量
- ios - Storyboard 通过全局值访问 UIControl 属性
- spotfire - 如何在 Spotfire 中为条形图加粗/斜体/大小标题?
- spring-boot - spring boot admin 仅显示详细信息选项卡
- python - msys2:安装 python 包失败
- node.js - 在shopify-api-node中如何获取大于订单id的订单