2011-02-09 8 views
7

JavaScript를 통해 텍스트를 변경해야하는 내 페이지 (은 라벨이나 다른 컨트롤으로 변환 할 수 없음)에 asp : Literal이 있습니다. 레이블에 대해 작동하는 다음 코드가 있습니다. 아무도 도와 줄 수 있니?JavaScript로 ASP 리터럴 텍스트 설정

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

감사


UPDATE : 코드 뒤에 정보 메시지 등을 위해에 HTML/CSS를 기록으로 내가 리터럴에서 변경할 수 없습니다 :

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

왜 수 다른 컨트롤로 바꿀 수 없습니까? 이것은 텍스트를 변경해야한다는 요구와 짝을 지어서 이상하게 들립니다. – Stilgar

+0

@Stilgar - 본래의 질문을 업데이트했습니다. – James

+0

레이블을 변경할 수없는 이유에 대한 귀하의 업데이트가 이치에 맞지 않습니다. 이것은 라벨 컨트롤의 특정 목적 중 하나입니다. 당신이 리터럴로 할 수있는 일이라면, 당신은 거의 같은 레이블로 할 수 있습니다. 그 말은, 그의 생각이 나에게 가장 단순 해 보이는 것처럼 @Slaks에 +1했다. –

답변

19

<asp:Literal> 제어하지 않습니다 자신의 HTML 태그를 만드십시오.
따라서 조작 할 수있는 요소가 없습니다.

대신 <asp:Literal>을 ID가있는 <div> 태그에 넣을 수 있습니다.

+1

... 또는 ''태그가 약간의 텍스트 콘텐츠 인 경우 – Pointy

+1

또는 ''을 사용하면 범위 내에 싸인 리터럴입니다. –

3

리터럴에 html 마크 업이 포함되어 있습니까?

그렇지 않은 경우 리터럴 컨트롤을 div에 래핑하고 ID를 부여 할 수 있습니다. 그런 다음 js를 사용하여 해당 div 내의 텍스트를 바꿉니다.

당신의 갱신에 응답

:이 경우

, 당신은 success의 클래스 사업부 렌더링되기 때문에, 내가 그 사업부의 HTML을 업데이트 할 jQuery를 사용하는 것이 ... 그것은 것처럼 간단 할 것 :

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

원래 질문을 – James

+0

@james updated 대답을 업데이트했습니다. 가능한 경우 jquery를 사용하여 리터럴 – stephen776

+0

에서 div의 텍스트를 udpdate하는 것이 좋은 답변이지만 jQuery를 사용하고 싶지는 않습니다. (이해하지 못 하겠습니다!) 그러나 JQ를 이해하는 다른 사람들을 위해 그것을 평가했습니다 . – James

7

ASP.NET 리터럴은 페이지에 태그를 추가하지 않습니다. 따라서 당신은 당신이 자바 스크립트를 통해 편집 할 수 있도록 약간의 용기에 콘텐츠를 포장해야합니다 : 당신이 한 가정

하여 페이지에 리터럴 다음 (때문에

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

그리고 뒤에 코드를 통해 텍스트를 설정했다 당신이하지 않으면, 당신은 단지)로 시작하고이 문제를 가지고 있지하는 마크 업에서 스팬/DIV을 만들 수 있습니다

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

코드 뒤에이된다 :

그리고 자바 스크립트는 다음과 같습니다

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

리터럴은 직접 페이지에 텍스트의 렌더링입니다. 렌더링하는 유일한 HTML은 Literal에 설정 한 텍스트 문자열에 포함하는 HTML 마크 업입니다. div로 둘러싸인 리터럴을 사용하는 대신 (특히 해당 기능을 원한다면) ASP Label을 사용하고 작업을 수행 할 수 있습니다.

2

는 랩 다음 <div>와의 <asp:literal> 제어 내용을 취소 필요한 경우 jQuery를 사용하여 아래 그림과 같이 :

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

사용하여 텍스트를 지우는 방법을 jQuery를 수 있습니다 :

//Clear the html inside of the div 
$("#divMyText").html(""); 
관련 문제