2012-09-12 10 views
0

asp 서버 단추의 onClick 이벤트에서 javascript 함수를 호출하려고합니다. 업데이트 패널에이 버튼과 라벨이 있습니다.document.GetElementById 작업을 가져올 수 없습니다.

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
     <asp:Button ID="Button1" runat="server" 
      style="z-index: 1; left: 49px; top: 119px; position: absolute; height: 26px;" Text="Button" 
      onclick="Button1_Click"/> 
     <asp:Label ID="Label1" runat="server" Text="l1" 
      style="position:absolute; top: 123px; left: 127px;"></asp:Label> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

코드 뒤에 : 영문의

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterClientScriptBlock(this, typeof(Button), "me", "me()", true); 
} 

자바 스크립트 :

<script type="text/javascript"> 
function me() 
{ 
    document.getElementById('<%= Label1.ClientID %>').value="clicked"; 
} 
</script> 

내가 할 노력하고 모든 버튼에 있어야합니다 레이블의 값을 클릭 영문에서

'클릭 한'으로 바뀌 었습니다. 아무렇지도 않게 나타나고 방화범에는 오류가 없습니다. 내 잘못은 어디에서 났어?

P .: 코드 뒤에서 자바 스크립트 함수를 호출하는 방법을 배우고 있습니다. 그래서 코드 최적화도 환영합니다. (실제로 JS 함수에서 구현할 코드가 많기 때문에 적절한 제안을하십시오.)

답변

5

레이블 컨트롤이 <div> 또는 <span> (정확히 기억할 수 없음)이 아닌 텍스트 입력 필드.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label1.Text = "clicked"; 
} 

UPDATE :

으로

document.getElementById('<%= Label1.ClientID %>').innerHTML = 'clicked'; 

하거나 대신 등록하는 클라이언트 측 콜백의 서버 측에서 그것을 할 : 그래서 당신은 innerHTML 재산이 아니라 value을 설정해야 코멘트 섹션에서 요청하는 방법은 서버에서 clientside 콜백에 매개 변수를 전달하는 방법입니다.

,
protected void Button1_Click(object sender, EventArgs e) 
{ 
    string param1 = ... 
    double param2 = ... 
    int param3 = ... 
    var serializer = new JavaScriptSerializer(); 

    ScriptManager.RegisterClientScriptBlock(
     this, 
     typeof(Button), 
     "me", 
     string.Format("me({0})", serializer.Serialize(new { param1 = param1, param2 = param2, param3 = param3 })), 
     true 
    ); 
} 

및 콜백 : 위대한 작품을

function me(values) { 
    // you could use values.param1, values.param2, values.param3, ... here 
} 
+0

. 나는 대답을 받아들이 기 위해 8 분을 기다릴 필요가있다. 사실 내 요구 사항은 다음과 같습니다. 업데이트 패널에 버튼이 있고 옆에 Google지도가 있습니다. 나는 버튼 클릭과 코드에 자바 스크립트 함수에 값을 전달하는 몇 가지 연산을 .aspx에서 수행하고있다. 이 자바 스크립트 함수는 내 필요에 따라지도에 값을 표시합니다. 방금이 예제로 옮겼습니다. 나는 나의지도 경우에 이것을 할 수 없다. 그 어떤 해결책이라도? – Cdeez

+0

@Cdeez, 네, 당신은 쉽게 콜백 매개 변수를 서버에서 전달할 수 있습니다. 나는 이것을 설명하기 위해 나의 대답을 업데이트했다. 복잡한 객체 그래프 전체를 전달할 수도 있습니다. –

관련 문제