2012-05-07 18 views
2

これは知っている人にとっては簡単かもしれません。このスクリプトは、ボタンをクリックするとDIVタグを取得し、内容を含む新しいページを開きます。しかし、ユーザーが何かを入力した後にtextareaの内容を表示したい。getElementByIdはテキストエリアの内容を取得しません

アイデアはありますか?コードは次のとおりです。

<script type="text/javascript"> 
 
    var win=null; 
 
    function printIt(printThis) 
 
    { 
 
    win = window.open(); 
 
    self.focus(); 
 
    win.document.open(); 
 
    win.document.write('<'+'html'+'><'+'head'+'><'+'style'+'>'); 
 
    win.document.write('body, td { font-family: Verdana; font-size: 10pt;}'); 
 
    win.document.write('<'+'/'+'style'+'><'+'/'+'head'+'><'+'body'+'>'); 
 
    win.document.write(printThis.innerHTML); 
 
    win.document.write('<'+'/'+'body'+'><'+'/'+'html'+'>'); 
 
    win.document.close(); 
 
    win.print(); 
 
    } 
 
</script> 
 
</head><body> 
 
    
 
    <div id="activity5"> 
 
    <blockquote> 
 
     <table border="0" cellpadding="3"> 
 
     </table> 
 
     <form id="form4" name="form1" method="post" action=""> 
 
     <textarea name="Activity1a4" cols="80" rows="15" class="s23" id="ta1"></textarea> 
 
     <p> 
 
     <input name="print4" type="submit" id="print4" value="Print" onclick="printIt(document.getElementById('activity5')); return false"/> 
 
      * Retain this learning activity as part of your portfolio of evidence.</p> 
 
     <p>Check your findings with the correct answer in the back of this Learner Resource under 'Learning activity answers'.</p> 
 
     </form> 
 
    </blockquote> 
 
    </div> 
 
</body>

答えて

2

あなたがいない.innerHTMLで、.valueでテキストエリアの内容を取得します。

つまり、activity5 innerHTMLを取得すると、子のテキストエリアに入力されたテキストは含まれません。そのテキストを含める場合は、テキストエリア上で別々にそのテキストを.valueで取得し、それを新しいページの新しいテキストエリアに挿入する必要があります。

+0

「テキストエリア」ではなく、「div」です。 – Guffa

+0

@ Guffa - 私は私の答えにもっと多くを加えました。基本的な問題は、ユーザーがテキストエリアに入力するテキストが親オブジェクトのinnerHTMLに含まれていないことです。彼らは手動でそのテキストをフェッチし、必要な場所に挿入する必要があります。 – jfriend00

2

テキストエリアの内容をvalue属性で個別に取得し、それと同じ方法で明示的に設定する必要があります。それを行う方法の例については、http://jsfiddle.net/EPvWV/をご覧ください。

関連する問題