操作asp.net';runat=";服务器"';javascript中的html对象
好的,我知道您可以使用以下代码从asp.net控件获取信息:操作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#实现 为了进一步澄清,我
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编写脚本。它将在客户端脚本代码中使用以下内容:
如果您认为这是一种方法,并且您的新用户可以使用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";