2016-10-01 15 views
1

印刷用のボタンがあります。私は、印刷ボタンを押した後、別のボタンにフォーカスを移動したいと思います。しかし、私のコードは動作していません。ボタンを押して印刷した後、別のボタンにフォーカスを移します。

エラーファイヤーバグから取得するのはTypeError: document.getElementById(...) is nullです。 印刷プロセスは正常に完了しましたが、印刷後にフォーカスは「btn_CR」ボタンには表示されません。

印刷プロセスの後に、どのようにして "btn_CR"ボタンにフォーカスを当てることができますか? サーバサイドスクリプトを書く必要がありますか、これはjavascriptで処理できますか?助けてください

は私のaspxコード::

<asp:Content ID="AdminContent" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
<asp:Panel ID="print_Client_registration" Visible="false" runat="server"> 
     <div id="printIt">    
      <div style="width: 260px;font-family:Arial,Helvetica, sans-serif;"> 
       <div style="text-align: center; width: 100%; font-size: 15px;"><b> 
        <asp:Label ID="lblClientId" runat="server" /></b></div> 
       <div style="text-align: left; width: 100%; font-size: 13px;"><b>Name:</b> 
        <asp:Label ID="lblName" runat="server" /></div> 
      </div> 
     </div>    
     <asp:Button ID="btn_print" runat="server" ClientIDMode="Static" Text="Print" OnClientClick="printPage();"/>   
     <div> 
      <table class="nostyle"> 
       <tr> 
        <td><input type="button" id="btn_CR" runat="server" value="Client Register" onclick="window.location.href = 'NewClientRegister.aspx'" /></td> 

       </tr> 
      </table> 
     </div> 
    </asp:Panel> 
    <script type="text/javascript"> 
     var NextFocusButtonId = <%=btn_CR.ClientID%>; 
    </script> 
    <script type="text/javascript" src="../scripts/print.js"></script> 
</asp:Content> 

printPage()関数は、外部の "print.js" にあるファイル

function printPage() { 
    var headstr = "<html><head><title></title></head><body>"; 
    var footstr = "</body>"; 
    var newstr = document.getElementById("printIt").innerHTML; 
    var oldstr = document.body.innerHTML; 
    document.body.innerHTML = newstr; 
    window.print(); 
    document.body.innerHTML = oldstr; 
    document.getElementById('<%=btn_CR.ClientID%>').focus(); 
} 

としては、私は、コードを変更する提案

document.getElementById('<%=btn_CR.ClientID%>').focus(); 

document.getElementById('btn_CR').focus(); 同じエラーが発生するまでTypeError: document.getElementById(...) is null

+0

を書きますが、確実である: は今、あなたは、それはたとえば、あなたがこれを行うことができ、ちょうどJavaScriptのファイルの前にこれを行うためにそれをトリックを翻訳する必要があるためエラーは2番目の 'getElementById'にありますか? – Backs

+0

@Backs私はjavascriptにはあまり良くありません。私はちょうど私が火かき棒のコンソールから得るものを投稿します。問題の解決方法を教えてください。ありがとうございました! – user4221591

+0

男は私にいくつかの解決策を教えてください。ありがとうございました! – user4221591

答えて

1

.jsファイルにインライン式<%=btn_CR.ClientID%>を使用することはできません。 また、あなたのprintPage機能であなたがgetElementById(printIt').innerHTMLを呼んでいる

document.getElementById('btn_CR').focus(); 

を使用してみてください。 ID 'printIt'の要素がないので、nullを返し、null.innerHTMLを返します。

+0

すぐにお返事ありがとうございます。では、別のボタンに焦点を当てるにはどうすればよいですか? – user4221591

+0

私は完全なaspxコードを提供しました。見てください。ありがとう! – user4221591

0

コード<%=btn_CR.ClientID%>のこの部分は、print.jsの中に翻訳されていません。

<script> 
var NextFocusButtonId = <%=btn_CR.ClientID%>; 
</script> 
<script type="text/javascript" src="../scripts/print.js"></script> 

とご print.jsの内側にあなたは

document.getElementById(NextFocusButtonId).focus(); 
+0

'document.getElementById(NextFocusButtonId).focus();'または 'document.getElementById( 'NextFocusButtonId').focus();'を使うべきですか?提案してください。 – user4221591

+0

私はこのページのHTMLを提供しました。コードを見てください。私はあなたが示唆したように変更を加えましたが、まだ問題を解決することはできません。ありがとうございました!!! – user4221591

関連する問題