在 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