2011-02-09 8 views
7

Mam asp: Literał na mojej stronie (, którego nie można przekonwertować na etykietę lub inną kontrolkę), której potrzebuję zmienić tekst za pomocą JavaScript. Mam następujący kod, który działa dla etykiety . Czy ktokolwiek może pomóc?Ustaw literałowy tekst ASP z Javascriptem

<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" /> 

Dzięki


UPDATE: nie mogę zmienić z dosłownym jak kod tyłu pisze HTML/CSS do niego na komunikat informacyjny np

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

dlaczego nie zmienisz go do żadnej innej kontroli? Brzmi to naprawdę dziwnie w połączeniu z wymogiem zmiany tekstu. – Stilgar

+0

@Stilgar - Mam zaktualizowane moje oryginalne pytanie – James

+0

Twoja aktualizacja, dlaczego nie możesz zmienić etykiety, nie ma sensu. Jest to jeden ze szczególnych celów kontroli etykiet. Wszystko, co możesz zrobić z literałem, możesz zrobić z etykietą tak samo. Biorąc to pod uwagę, mam +1 do @Slaks, ponieważ jego pomysł wydaje mi się najprostszy. –

Odpowiedz

19

<asp:Literal> kontrole nie utwórz własny tag HTML.
Dlatego nie ma elementu, którym można manipulować.

Zamiast tego można zawinąć znacznik <asp:Literal> w identyfikatorze <div>.

+1

... lub znacznik '', jeśli to tylko odrobina treści tekstowej. – Pointy

+1

Lub użyj '', jest to Literal owinięty w rozpiętość. –

3

Czy literał zawiera znaczniki html?

jeśli nie, można owinąć kontrolę dosłowną w div i nadać jej identyfikator. Następnie użyj js, aby zastąpić tekst w tym div.

w odpowiedzi na Twój aktualizacji:

w tym przypadku, ponieważ jesteś renderowania div z klasą success, chciałbym wykorzystać jQuery zaktualizować HTML w tej dz ... byłoby tak proste, jak :

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

Mam zaktualizowane moje oryginalne pytanie – James

+0

@james zaktualizowaną odpowiedź. jeśli to możliwe, użyj jquery do udpdate tekstu w div wewnątrz literalnej – stephen776

+0

To jest dobra odpowiedź, ale nie chcę używać jQuery (nie rozumiem tego!) Jednak oceniłem to dla innych ludzi, którzy rozumieją jQ . – James

7

Literał ASP.NET nie dodaje żadnych znaczników do strony. Dlatego trzeba zawijać treści w jakimś pojemniku, dzięki czemu można go edytować za pomocą JavaScript:

Zakładając, że miał następujące Dosłowne na stronie:

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

I zostały ustalone tekst poprzez kod związany (bo jeśli nie, można po prostu stworzyć zakresu/div w znacznikach na początku i nie ma tego problemu):

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

Kod za postać:

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

A JavaScript byłoby:

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

dosłownym jest bezpośrednie renderowanie tekstu na stronie. Jedynym wyświetlanym przez niego kodem HTML będzie znacznik HTML, który umieścisz w łańcuchu tekstowym ustawionym na Literał. Zamiast używać Literału otoczonego przez div (chyba że konkretnie chcesz tej funkcjonalności) możesz użyć ASP Label i wykonywać na nim operacje.

2

Wrap kontrola w <div> a następnie <asp:literal> użyć jQuery, jeśli potrzeba, aby usunąć zawartość jak pokazano poniżej:

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

Oto jak usunąć tekst przy użyciu jQuery:

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