在 Table 中记录解决方案
Log Solutions In Table
我需要帮助 please.I 创建了一个计算器,并想知道如何让它在文本框上显示结果并在列上创建日志。
一列用于问题,另一列用于答案。/*
Fiddle link
<input type="button" value="="
onClick="document.calculator.ans.value=eval
(document.calculator.ans.value); addlog();" />
</form>
<br>
<table id="myTable">
<tr>
</tr>
<script>
function addlog()
{
var table = document.getElementById("myTable");
var row = table.insertRow(0);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "Question";
cell2.innerHTML = "solution";
}
</script>
当我检查您 fiddle 中的 javascript 控制台时,它告诉我 addlog() is not defined
。这是因为它是在 onLoad
事件中定义的,这意味着它是在另一个函数中定义的,因此对您的 window 级元素不可见。查找有关词法闭包的信息以了解原因。
解决方案很简单:将您的函数显式定义为 window 对象的一部分:
window.addlog = function() {
//the same code here
}
还有其他解决方案,但这是一个"best practice"。事实上,所有的全局变量都应该是显式的,以使调试更容易。希望对您有所帮助。
第一个问题,你的table好像坏了。可能像这样完成 table 标签:
<table id="myTable">
<tr>
<th>Question</th>
<th>Answer</th>
</tr>
</table>
接下来您可以将 "onLoad" 更改为 "No wrap - (inhead)"
然后像这样在顶部定义一个全局变量的函数 - 问题:
var question;
function addlog () {
var table = document.getElementById("myTable");
var row = table.insertRow(1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = question;
cell2.innerHTML = document.calculator.ans.value;
}
最后在你的调用方法中设置问题并调用 addlog:
<input type="button" value="=" onclick="
question = document.calculator.ans.value;document.calculator.ans.value=eval(document.calculator.ans.value); addlog();" />
这是一个似乎 运行 不错的 JSFiddle JSFiddle
我需要帮助 please.I 创建了一个计算器,并想知道如何让它在文本框上显示结果并在列上创建日志。 一列用于问题,另一列用于答案。/* Fiddle link
<input type="button" value="="
onClick="document.calculator.ans.value=eval
(document.calculator.ans.value); addlog();" />
</form>
<br>
<table id="myTable">
<tr>
</tr>
<script>
function addlog()
{
var table = document.getElementById("myTable");
var row = table.insertRow(0);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "Question";
cell2.innerHTML = "solution";
}
</script>
当我检查您 fiddle 中的 javascript 控制台时,它告诉我 addlog() is not defined
。这是因为它是在 onLoad
事件中定义的,这意味着它是在另一个函数中定义的,因此对您的 window 级元素不可见。查找有关词法闭包的信息以了解原因。
解决方案很简单:将您的函数显式定义为 window 对象的一部分:
window.addlog = function() {
//the same code here
}
还有其他解决方案,但这是一个"best practice"。事实上,所有的全局变量都应该是显式的,以使调试更容易。希望对您有所帮助。
第一个问题,你的table好像坏了。可能像这样完成 table 标签:
<table id="myTable">
<tr>
<th>Question</th>
<th>Answer</th>
</tr>
</table>
接下来您可以将 "onLoad" 更改为 "No wrap - (inhead)"
然后像这样在顶部定义一个全局变量的函数 - 问题:
var question;
function addlog () {
var table = document.getElementById("myTable");
var row = table.insertRow(1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = question;
cell2.innerHTML = document.calculator.ans.value;
}
最后在你的调用方法中设置问题并调用 addlog:
<input type="button" value="=" onclick="
question = document.calculator.ans.value;document.calculator.ans.value=eval(document.calculator.ans.value); addlog();" />
这是一个似乎 运行 不错的 JSFiddle JSFiddle