我有一个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>
但它没有显示任何东西。为什么呢?
答案 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;