document.getElementById没有获得新输入的HTML文本输入值

时间:2014-08-28 10:52:22

标签: javascript jquery html

我使用以下代码。

这个想法是打印div的内容,名称为" PrintThis"它包含文本输入区域" textarea1"。

问题是getElementById只返回加载页面的字符串; "蛋糕"在这种情况下。

如果我改变"蛋糕" to" pie"点击并输入" textarea1"在页面上,printContents仍然有" cake"不是"馅饼"。

<html> 
<head> </head> 
<script type="text/javascript">

function printFunction(divName) {
var printContents = document.getElementById(divName).innerHTML;
//Now call a script to print (not included)
}
</script>
 <body> 
  <div id="printThis" name="printThis">
   <textarea id="textarea1" cols="1" rows="10" style="width:95%!important;" ">cake</textarea>
  </div>

  <input type="button" value="Print Div" onClick="printFunction('printThis')">
</body></html>

在我的生产版本中,我还使用AJAX将文本区域值发布回服务器,因此理论上可以使用页面刷新,虽然没有运行,但我尝试使用这些选项。

document.location.reload(true);
window.top.location=window.top.location;

生产版本也有jQuery可用。

2 个答案:

答案 0 :(得分:1)

首先,你试图得到div的innerHTML,而不是实际的textarea。 其次,而不是试图让innerHTML尝试使用价值。

http://jsfiddle.net/qdymvjz8/

<div id="printThis" name="printThis">
   <textarea id="textarea1" cols="1" rows="10">cake</textarea>
  </div>
<input type="button" value="PrintDiv" onClick="printFunction('textarea1')">

function printFunction(divName) {
var printContents = document.getElementById(divName).value;
}

答案 1 :(得分:0)

如果你的div中有多个项目,那么你可以遍历div的子项并拖出值。

function printFunction(divName) {
  var printContents = document.getElementById(divName),
    childItemCount = 0,
    stringToPrint = '';

 for (childItemCount; childItemCount < printContents.children.length; childItemCount++) {
    stringToPrint += printContents.children[childItemCount].value;
 }

 console.log(stringToPrint);
 //Now call a script to print (not included)
}