操作asp.net';runat=";服务器"';javascript中的html对象

操作asp.net';runat=";服务器"';javascript中的html对象,javascript,asp.net,html,Javascript,Asp.net,Html,好的,我知道您可以使用以下代码从asp.net控件获取信息: var element = document.getElementById('<%=myControl.ClientID%>'); var-element=document.getElementById(“”); 然而,在Javascript中获取html元素后,我无法对其进行操作。我需要做什么来更改javascript中设置为runat=“server”的内容的属性 是否只能通过服务器端C#实现 为了进一步澄清,我

好的,我知道您可以使用以下代码从asp.net控件获取信息:

var element = document.getElementById('<%=myControl.ClientID%>'); 
var-element=document.getElementById(“”);
然而,在Javascript中获取html元素后,我无法对其进行操作。我需要做什么来更改javascript中设置为runat=“server”的内容的属性

是否只能通过服务器端C#实现

为了进一步澄清,我有一个div,它通过Javascript改变大小,我试图让它的innerhtml中存在的mschart改变它的高度/宽度。但是,它在服务器上运行这一事实导致了这些问题

<div id="div0" style="background-color:Silver; position: absolute; top: 0px; left: 0px; width: 480px; height: 245px;">
            <asp:Chart ID="chart0" runat="server"  Height="245px" Width="480px" 
                    BackColor="220, 230, 242" BackGradientStyle="None" 
                        BackSecondaryColor="220, 230, 242">
            <BorderSkin PageColor="220, 230, 242" />
            </asp:Chart>
        </div>


编辑:最终使用查询字符串处理通过回发的图表大小调整,然后在init上获取javascript中的值并调整div的大小。

因为元素具有
runat=server
,所以您只能在代码隐藏(服务器端)中修改属性。但是,实际的客户端属性(如可见性)可以通过javascript进行更改。

您真正的意思有点不清楚。如果您的意思是,您想要操作服务器端属性,或者调用服务器端函数,那么您不能通过javascript来实现。您需要使用ajax或webmethods之类的方法。如果您的意思是要修改它的客户端属性,比如它是否可见,或者它包含什么数据,那么可以这样做。但是,你需要详细说明你到底想做什么

编辑:

根据你的最新信息,有好消息也有坏消息。是的,您可以在客户端更改控件的大小,但这只会拉伸图像。MSChart生成一个下载的图像文件。拉伸会导致质量差


如果不选择拉伸,则需要根据新尺寸重新生成图表。这将要求您使用某种ajax,或者完全刷新页面。

如果“控件”转换为简单的HTML元素,您应该能够编辑该控件的客户端属性。但是,有时服务器端属性没有客户端模拟


需要注意的一点是,如果控件未设置为visible,则意味着它根本不在页面上呈现;如果是这种情况,那么您就无法通过JavaScript访问它。

如果您试图修改的只是对象的大小和高度,那么没有理由不执行以下操作:

var element = document.getElementById('<%=myControl.ClientID%>'); 
element.style.height = divHeight;
var-element=document.getElementById(“”);
element.style.height=divHeight;
只需查看生成的html,即具有该名称的控件实际上是一个div或一个图像(或可以重新调整大小的对象),您可以在其中设置宽度和高度。我不知道图表控件呈现给什么。在任何情况下,都可以使用Firebug检查页面中的html元素,并查看您在javascript中所做的更改如何影响结果


在任何情况下,请记住,您只能在javascript中设置客户端属性这意味着您希望在某个div元素上设置它,而不是在服务器端控件上设置它。知道服务器端控件确实呈现为html,您应该能够以某种方式实现所需的功能。

我的建议是使用jQuery编写脚本。它将在客户端脚本代码中使用以下内容:

  • 获取所需高度的元素
  • 获取要操纵的元素
  • 使用第1部分中的值更改图元高度

  • 如果您认为这是一种方法,并且您的新用户可以使用jQuery,我可以为您提供一些代码。

    我尝试在jQuery中操作一个包含
    runat=“server”
    属性的控件。我无法改变它。我一删除
    runat=“server”
    ,就注意到jquery发生了变化

    您可以自己测试:

    <asp:Label ID="myLabel">hello, warlord!</asp:Label>
    <asp:Label ID="myLabel2" runat="server">hello, warlord!</asp:Label>
    <script type="text/javascript">$("#myLabel").css("border", "3px solid red");</script>
    <script type="text/javascript">$("#myLabel2").css("border", "3px solid red");</script>
    
    你好,军阀!
    你好,军阀!
    $(“#myLabel”).css(“边框”,“3px实心红色”);
    $(“#myLabel2”).css(“边框”,“3px实心红色”);
    
    我也有同样的问题,这通常发生在html控件(带有runat=“server”)位于contentPlaceHolder中时。以下是我所做的:

    我改变了:

    document.getElementById("mypopup").style.visibility = "visible";
    
    致:

    在浏览器上查看页面源代码时,您将看到html控件的实际名称


    您可以找到有关如何正确使用ClientID属性的更多信息

    您还可以更改服务器端控件(带有
    runat=“server”
    的控件)的所有html属性(例如通过javascript),因为即使是ASP.NET控件最终也会呈现为html控件。或者,他可以生成大图像,通过CSS向下调整大小,然后在需要时通过javascript再次向上调整大小。这样可以保持质量
    document.getElementById("ctl00_ContentPlaceHolder1_mypopup").style.visibility = "visible";