通过输入方法为全局变量赋值

时间:2016-01-02 02:39:27

标签: javascript

美好的一天。首先要有耐心,因为我只是一个新的Javascript和编程爱好者。对我的项目的关注是我想通过输入方法为全局变量赋值并运行它。我已经尝试过,研究过,此时没有其他工作可供我使用。所以我问任何人的想法,怎么可能。您的帮助肯定会帮助我完成学习过程。

最初,代码看起来像这样:全局变量numItems由30.定义。在下面的两个其他函数中也提到了变量numItems。我想要做的是通过输入法改变这个数字。我试过了......

numItems = 30;
var xvalue = [];
var yvalue = [];
for (var i=0; i < numItems; i++) {
xvalue.push(i % 9);    yvalue.push((i % 9)+1);      
}

followed by several functions....

这是我的尝试,但似乎这不起作用...任何帮助将不胜感激。

numItems = document.getElementById("numInput");
numItems.addEventListener("input", whatValue);

function whatValue() {
var num = parseFloat(numItems.value);
document.getElementById("numInput") = num;
}

var xvalue = [];
var yvalue = [];
for (var i=0; i < numItems; i++) {
xvalue.push(i % 9);    yvalue.push((i % 9)+1);      
}

followed by several functions....

以下是我在下面应用迈克尔建议时的整个代码:它有效,但我现在关注的是输出中未定义的变量---&gt; undefined + undefined或undefined - undefined

<body>
<input id="numInput">
<select id="processMath">
  <option value="add">Addition</option>
  <option value="sub">Subtraction</option>
</select>
<button onclick="newExercise()">New Exercise</button>
<button onclick="createExercise()">Create Exercise</button>
<div id="tableOne"></div>
</body>

<script type="text/javascript">
numItems = document.getElementById("numInput");
numItems.addEventListener("input", whatValue);

function whatValue() {
numItems = parseFloat(document.getElementById("numInput").value);
}

xvalue = [];
yvalue = [];
for (var i=0; i<numItems ; i++) {
xvalue.push(i % 9);    yvalue.push((i % 9)+1);      
}

function tableOne (operator) {
var valtp = '';
var spc = '<table border="1" width="80%"><tr>';
i = 0;
while (i < numItems ) {
a = xvalue[i];
b = yvalue[i];
spc += '<td align="right">'+a;
if (operator == 'add') { spc += '<br>+ '+b; valtp = a+b; }
if (operator == 'sub') { spc += '<br>- '+b; valtp = a-b; }
spc += '<br>_____';
i++;  
if ((i % 5) == 0) { spc += '</tr><tr>'; }
}  
spc += '</tr></table>';
return spc;
}

function createExercise() {
var a = 0;  var b = 0;  var spc = '';
var spc = '';
var sel = document.getElementById('processMath').value;
switch (sel) {
case 'add' : spc += tableOne(sel); break;
case 'sub' : spc += tableOne(sel); break;
}
document.getElementById('tableOne').innerHTML = spc;
}

function makeRandom() {
return (Math.round(Math.random())-0.5);
}

function newExercise() {
xvalue.sort(makeRandom);
yvalue.sort(makeRandom);
}
</script>

1 个答案:

答案 0 :(得分:1)

除非我误解了您,否则您的whatValue()函数似乎正在尝试更改输入值,而不是更改numItems变量,但它们都失败了计数。

function whatValue() {
  var num = parseFloat(numItems.value);
  document.getElementById("numInput") = num;
}

应该是:

function whatValue() {
  numItems = parseFloat(document.getElementById("numInput").value);
}

现在,每次numInput更改时,numItems变量都应该更改。

但是,即使numItems发生了变化,它也不会让你的其余代码再次运行。因此,当numItems为30时,你的两个数组仍然会像它们那样。

相关问题