Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么标签不使用RegisterClientScriptBlock更改颜色?_C#_Asp.net_Javascript - Fatal编程技术网

C# 为什么标签不使用RegisterClientScriptBlock更改颜色?

C# 为什么标签不使用RegisterClientScriptBlock更改颜色?,c#,asp.net,javascript,C#,Asp.net,Javascript,我的aspx页面定义如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript" language='javascript'> function changecolor() { var lbl = document.getE

我的aspx页面定义如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

   <script type="text/javascript" language='javascript'>
       function changecolor() {
           var lbl = document.getElementById('lblDisplayDate');
           lbl.style.color = 'red';
       };
  </script>

</head>
<body>
<form id="form1" runat="server">
<div>
    <asp:Label ID="lblDisplayDate" runat="server" 
               Text="Label"></asp:Label><br />

    <asp:Button ID="btnPostBack2" runat="server" 
                Text="Register Client Block Script" 
                onclick="btnPostBack2_Click" />

</div>
</form>
即使我将脚本放在一个函数中以更改颜色,它仍然没有这样做,如果函数已经包含在脚本标记中,为什么我需要将脚本标记添加为true

lblDisplayDate位于页面加载中,每次重新加载页面时,它都被设置为当前时间。

更改此行:

var lbl = document.getElementById('lblDisplayDate');
致:

到您的
标签

编辑在这一点上,我很困惑你到底想实现什么

如果只想更改标签的颜色而不回发,请使用onclick处理程序将
更改为正常的
,然后调用脚本,如下所示:

<input type="button" ... onclick="changeColor();" />
protected void btnPostBack2_Click(object sender, EventArgs e)
{
    /* ... other stuff goes here ... */
    lblDisplayDate.BackColor = Color.Red;
    /* ... other stuff goes here ... */
}

就像Sean已经说过的:在这种情况下,最好使用OnClientClick。OnClientClick将防止回发发生-它是使用javascript动态完成的。您所需要做的就是将其优先于javascript函数


我不明白你想做一个“RegisterStartupScript和RegisterClientScriptBlock”的颜色更改。当您想从代码后面添加javascript时,应该使用这些代码,但是看到您已经在aspx页面中写出了它,它的使用是毫无意义的。

请查看此内容。我已经修改了你的代码,现在工作正常,没有回发

<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
    <title>Untitled Page</title>
    <script type="text/javascript" language='javascript'>
       function changecolor() {
           var lbl = document.getElementById('lblDisplayDate');
           lbl.style.color = 'red';
       };
</script>
</head>
<body>
    <form id="form1" runat="server">
<div>
<asp:Label ID="lblDisplayDate" runat="server" 
           Text="Label"></asp:Label><br />

<asp:Button ID="btnPostBack2" runat="server" 
            Text="Register Client Block Script" 
            OnClientClick="changecolor(); return false" />

    </div>
    </form>
  </body>
</html>

无标题页
函数changecolor(){
var lbl=document.getElementById('lblDisplayDate');
lbl.style.color='红色';
};

希望这有帮助

<input type="button" ... onclick="changeColor();" />
protected void btnPostBack2_Click(object sender, EventArgs e)
{
    /* ... other stuff goes here ... */
    lblDisplayDate.BackColor = Color.Red;
    /* ... other stuff goes here ... */
}
<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
    <title>Untitled Page</title>
    <script type="text/javascript" language='javascript'>
       function changecolor() {
           var lbl = document.getElementById('lblDisplayDate');
           lbl.style.color = 'red';
       };
</script>
</head>
<body>
    <form id="form1" runat="server">
<div>
<asp:Label ID="lblDisplayDate" runat="server" 
           Text="Label"></asp:Label><br />

<asp:Button ID="btnPostBack2" runat="server" 
            Text="Register Client Block Script" 
            OnClientClick="changecolor(); return false" />

    </div>
    </form>
  </body>
</html>