表中的日志解决方案

时间:2015-01-26 06:13:24

标签: javascript html onclick

我需要帮助。我创建了一个计算器,并想知道如何让它在文本框中显示结果并在列上创建日志。     一个用于问题,另一个用于答案./*    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>

2 个答案:

答案 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;。实际上,所有全局变量都应该是显式的,以使调试更容易。我希望这很有帮助。