我需要帮助。我创建了一个计算器,并想知道如何让它在文本框中显示结果并在列上创建日志。 一个用于问题,另一个用于答案./* 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>
答案 0 :(得分:1)
第一个问题,你的桌子好像坏了。完成表格标签可能是这样的:
<table id="myTable">
<tr>
<th>Question</th>
<th>Answer</th>
</tr>
</table>
接下来你可以改变&#34; onLoad&#34; to&#34;没有换行 - (inhead)&#34;
然后用一个全局变量定义这样的函数 - 问题:
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答案 1 :(得分:0)
当我检查你的小提琴中的javascript控制台时,它会告诉我addlog() is not defined
。这是因为它在onLoad
事件中定义,这意味着它在另一个函数中定义,因此对于窗口级元素不可见。寻找有关词法闭包的信息以了解原因。
解决方案很简单:明确将您的函数定义为窗口对象的一部分:
window.addlog = function() {
//the same code here
}
还有其他解决方案,但这是最佳实践&#34;。实际上,所有全局变量都应该是显式的,以使调试更容易。我希望这很有帮助。