簡體   English   中英

document.getElementById不會獲取新輸入的HTML文本輸入值

[英]document.getElementById doesn't get newly entered HTML text input value

我使用以下代碼。

想法是使用名稱“ PrintThis”打印div的內容,該名稱包含文本輸入區域“ textarea1”。

問題在於,getElementById僅返回頁面加載的字符串。 在這種情況下為“蛋糕”。

如果通過單擊並在頁面上鍵入“ textarea1”將“ cake”更改為“ pie”,則printContents仍然具有“ cake”而不是“ pie”。

<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。

首先,您嘗試獲取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;
}

如果生產中的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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM