2011-02-09 7 views
7

Tôi có một chữ: Chữ trên trang của tôi (không thể chuyển đổi thành Nhãn hoặc bất kỳ điều khiển nào khác) mà tôi cần thay đổi văn bản qua JavaScript. Tôi có mã sau hoạt động cho Nhãn. Ai có thể giúp được không?Đặt ASP Văn bản chữ với 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" /> 

Cảm ơn


UPDATE: tôi không thể thay đổi từ một chữ như mã đằng sau viết HTML/CSS để nó cho một thông tin nhắn ví dụ:

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

Tại sao có thể Bạn không thay đổi nó để kiểm soát bất kỳ khác? Điều này nghe có vẻ kỳ lạ kết hợp với yêu cầu thay đổi văn bản. – Stilgar

+0

@Stilgar - Tôi đã cập nhật câu hỏi gốc của mình – James

+0

Bản cập nhật của bạn về lý do bạn không thể thay đổi thành nhãn không có ý nghĩa. Đây là một trong những mục đích cụ thể của việc kiểm soát nhãn. Bất cứ điều gì bạn có thể làm với một chữ, bạn có thể làm khá nhiều với một nhãn chỉ giống nhau. Điều đó đang được nói, tôi đã +1 với @Slaks vì ý tưởng của anh ấy dường như đơn giản nhất đối với tôi. –

Trả lời

19

<asp:Literal> điều khiển không tạo thẻ HTML của riêng họ.
Do đó, không có yếu tố nào mà bạn có thể thao tác. Thay vào đó, bạn có thể quấn <asp:Literal> trong một thẻ <div> có ID.

+1

... hoặc thẻ '' nếu nó chỉ là một chút nội dung văn bản. – Pointy

+1

Hoặc sử dụng ' ', nó là một chữ được bọc trong một khoảng. –

3

Liệu chữ có chứa đánh dấu html không?

nếu không, bạn có thể bọc kiểm soát bằng chữ trong div và đặt tên cho id. Sau đó, sử dụng js để thay thế văn bản trong div đó.

để đáp ứng với bản cập nhật của bạn:

Trong trường hợp đó, kể từ khi bạn đang vẽ một div với một lớp success, tôi sẽ sử dụng jQuery để cập nhật các html trong div mà ... nó sẽ là đơn giản như :

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

Tôi đã cập nhật câu hỏi ban đầu của mình – James

+0

@james câu trả lời được cập nhật. nếu có thể sử dụng jquery để udpdate các văn bản trong div bên trong các chữ – stephen776

+0

Đó là một câu trả lời tốt, nhưng tôi không muốn sử dụng jQuery (không hiểu nó!) Tuy nhiên, tôi đã đánh giá nó lên cho những người khác hiểu jQ . – James

7

ASP.NET Literal không thêm bất kỳ đánh dấu nào vào trang. Vì vậy, bạn phải quấn nội dung của bạn trong một số thùng chứa để bạn có thể chỉnh sửa nó qua JavaScript:

Giả sử bạn đã có sau Literal trên trang:

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

Và được thiết lập các văn bản thông qua mã đằng sau (vì nếu bạn không, bạn chỉ có thể tạo nhịp/div trong đánh dấu để bắt đầu với và không có vấn đề này):

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

các mã sau trở thành:

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

Và JavaScript sẽ là:

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

Một Literal là làm cho một trực tiếp của văn bản để trang. HTML duy nhất mà nó sẽ hiển thị sẽ là đánh dấu HTML bạn đưa vào chuỗi văn bản mà bạn đã đặt thành Chữ. Thay vì sử dụng một Literal được bao quanh bởi một div (trừ khi bạn đặc biệt muốn chức năng đó), bạn có thể sử dụng một ASP Label và thực hiện các thao tác trên nó.

2

<asp:literal> kiểm soát trong một <div> và sau đó sử dụng jQuery nếu cần thiết để xóa các nội dung như hình dưới đây:

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

Sau đây là cách để xóa các văn bản sử dụng jQuery:

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