2011-02-09 26 views
7

Ho un asp: Letterale sulla mia pagina (che non può essere convertito in un'etichetta o qualsiasi altro controllo) che ho bisogno di cambiare il testo di tramite JavaScript. Ho il seguente codice che funziona per un'etichetta . Qualcuno può aiutare?Imposta testo letterale ASP con Javascript

<script type="text/javascript"> 
     function changeText() { 
      document.getElementById('<%= Test.ClientID %>').innerHTML = 'New Text'; 
     } 
    </script> 

     <a href="#" onclick='changeText()'>Change Text</a> 
     <asp:Label id="Test" runat="server" Text="Original Text" /> 

Grazie


UPDATE: non può cambiare da un letterale come il codice scrive dietro HTML/CSS ad esso per un informazione Messaggio per esempio:

LITMessage.Text = "<div class='success'>Information Successfully Updated</div>" 
+0

Perché può lo cambi a qualsiasi altro controllo? Questo suona davvero strano in coppia con il requisito di cambiare il testo. – Stilgar

+0

@Stilgar - Ho aggiornato la mia domanda originale – James

+0

L'aggiornamento del motivo per cui non è possibile cambiare a un'etichetta non ha senso. Questo è uno degli scopi specifici del controllo dell'etichetta. Qualunque cosa tu possa fare con un letterale puoi praticamente fare lo stesso con un'etichetta. Detto questo, ho +1 a @Slaks perché la sua idea sembra più semplice per me. –

risposta

19

<asp:Literal> controlli non lo fanno crea il proprio tag HTML.
Pertanto, non è possibile manipolare alcun elemento.

Invece, è possibile avvolgere lo <asp:Literal> in un tag con un ID.

+1

... o un tag '' se è solo un po 'di contenuto di testo. – Pointy

+1

Oppure usare '', è un letterale avvolto in una span. –

3

Il valore letterale contiene markup html?

in caso contrario, è possibile avvolgere il controllo letterale in un div e assegnargli un ID. Quindi usa js per sostituire il testo all'interno di quel div.

in risposta alla vostra aggiornamento:

In questo caso, dal momento che sono il rendering di un div con una classe di success, vorrei utilizzare jQuery per aggiornare il codice HTML in che div ... sarebbe così semplice come :

$('.success').html('new html goes here'); 
+0

Ho aggiornato la mia domanda originale – James

+0

@james risposta aggiornata. se possibile usa jquery per udpdare il testo nel div all'interno del letterale – stephen776

+0

Questa è una buona risposta, ma non voglio usare jQuery (non capisco!) Tuttavia, ho votato per altre persone che capiscono jQ . – James

7

Un valore letterale ASP.NET non aggiunge alcun markup alla pagina. Pertanto è necessario avvolgere il vostro contenuto in qualche contenitore in modo da poter modificare tramite JavaScript:

Supponendo che lei ha avuto il seguente letterale sulla pagina:

<asp:Literal runat="server" Id="literalControl" /> 

e sono stati l'impostazione del testo tramite codice dietro (a causa se non sei, si può solo creare l'arco/div nel markup per cominciare e non avere questo problema):

literalControl.Text = "Some text you want to change"; 

il codice diventa dietro:

literalControl.Text = "<span id='myId'>Some text you want to change</span>"; 

E il JavaScript sarebbe:

document.getElementById('myId').innerHTML = 'New Text'; 
1

un letterale è una diretta rendering del testo alla pagina. L'unico HTML che renderà sarà il codice HTML che includi nella stringa di testo che hai impostato su Literal. Invece di usare un letterale circondato da un div (a meno che tu non voglia specificamente quella funzionalità) puoi usare un ASP Label ed eseguire operazioni su di esso.

2

Avvolgere il controllo <asp:literal> in un <div> e quindi utilizzare jQuery, se necessario, per cancellare il contenuto come indicato qui sotto:

<div id="divMyText"> 
    <asp:Literal ID="MyText" runat="server"></asp:Literal> 
</div> 

Ecco come cancellare il testo utilizzando jQuery:

//Clear the html inside of the div 
$("#divMyText").html(""); 
Problemi correlati