Document.write不起作用

时间:2011-12-05 08:01:45

标签: javascript

我有一个javascript函数来计算总金额:

<script>
function calculate(v)
{

    v = parseFloat(v);
    v = v + 19;
    //alert(v);
    document.write.getElementById("total") = v;

}

</script>

位于<head></head>部分内。我从以下地方调用此函数:

Select amount you want to buy : <input type="text" name="qty"  onkeyup="calculate(this.value)"/> grams

我试图在这里显示v的值:

<div id="total"><script> document.write(v);</script></div>

但它没有显示任何东西。为什么呢?

6 个答案:

答案 0 :(得分:4)

document.write仅适用于“开放”文档。到达文件末尾时,文档将被关闭以进行写入(至少通过那些过时的方法)。我相信大多数浏览器会忽略尝试写入已关闭的文档,但有些可能会抛出错误。

此处的其他问题是您不是在调用document.write(),而是尝试访问该函数的另一个字段(或子项),getElementById,它不存在。

最后,在最后一段代码中,您试图将v的值写入calculate()函数的局部变量,因此它不存在于该范围之外。< / p>

其他一些人已经指出了补救办法,即document.getElementById('total').innerHTML = <your value>。访问innerHTML并不是最干净的方式,但它适用于所有主流浏览器并且易于理解。

希望对正在发生的事情做一点解释是有帮助的。祝好运! (如果你进一步了解它,可以考虑学习许多javascript框架中的一个 - 它们可以提供很大帮助.Prototype.js,jQuery,Dojo,MooTools等等都很好。)

答案 1 :(得分:3)

您对document.write()的工作方式存在误解。

可能想要......

var elem = document.getElementById("total");

if (elem.textContent) {
   elem.textContent = v;
} else {
   elem.innerText = v;
}

答案 2 :(得分:1)

document.write.getElementById("total") = v;

这不是document.write的工作方式,而是会在JavaScript控制台中引发错误。始终确保首先检查控制台是否存在可能的错误。

您正在寻找.innerHTML

答案 3 :(得分:1)

//document.write.getElementById("total") = v;
document.getElementById("total").innerHTML = v;

答案 4 :(得分:1)

you can do this

 document.getElementById("total").innerHTML = v;

 document.write(v);

答案 5 :(得分:0)

:错误的document.write.getElementById("total") = v;

document.getElementById("total").innerHTML = v;