【问题标题】:Get .aspx control ID in .js file获取 .js 文件中的 .aspx 控件 ID
【发布时间】:2013-08-23 14:17:01
【问题描述】:

大家好,

(头部)

<script type="text/javascript">

function ChangeColor1(elementid)
{
document.getElementById(elementid).style.backgroundImage = "url('images/1.jpg')";
document.getElementById("<%= img2.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= img3.ClientID%>").style.backgroundImage = "url'images/2.jpg')";
document.getElementById("<%= img4.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= imgchange.ClientID%>").style.backgroundImage = "url('images/img1.JPG')";
}

function ChangeColor2(elementid) 
{
document.getElementById(elementid).style.backgroundImage = "url('images/1.jpg')";
document.getElementById("<%= img1.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= img3.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= img4.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= imgchange.ClientID%>").style.backgroundImage = "url('images/img2.JPG')";
}

function ChangeColor3(elementid)
{
document.getElementById(elementid).style.backgroundImage = "url('images/1.jpg')";
document.getElementById("<%= img1.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= img2.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= img4.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= imgchange.ClientID%>").style.backgroundImage = "url('images/img3.JPG')";
}
function ChangeColor4(elementid)
{
document.getElementById(elementid).style.backgroundImage = "url('images/1.jpg')";
document.getElementById("<%= img2.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= img3.ClientID%>").style.backgroundImage = "url('images/2.jpg')";
document.getElementById("<%= img1.ClientID%>").style.backgroundImage =  "url('images/2.jpg')";
document.getElementById("<%= imgchange.ClientID%>").style.backgroundImage = "url('images/img4.JPG')";
}
</script>

(身体部分)

<table>
<tr>
<td id="img1" runat="server" onmouseover="ChangeColor1(this.id)" 
    style="background-image: url('images/2.jpg')">
</td>
</tr>  
<tr>
<td id="img2" runat="server" onmouseover="ChangeColor2(this.id)" 
    style="background image: url('images/2.jpg')">
</td>
</tr>
<tr>
<td id="img3" runat="server" onmouseover="ChangeColor3(this.id)" 
    style="background-image: url('images/2.jpg')">
</td>
</tr>
<tr>
<td id="img4" runat="server" onmouseover="ChangeColor4(this.id)" 
    style="background-image: url('images/2.jpg')">
</td>
</tr>
</table>

此代码在 .ASPX 页面中运行良好。

但是当我将此脚本代码放入 .js 文件并在 .ASPX 页面的头部调用它时,此 .js 文件无法正常工作。

ID=img2, ID=img3, ID=img4 of td 没有传入 .js 文件。

如何在 .js 文件中传递所有 ID ???

【问题讨论】:

  • 如果您使用MasterPages,它将无法正常工作,因为IDs 将被更改。您可以在.aspx 文件中添加一段Javascript,只是为了声明一些包含元素IDs 的变量。或者,更简单的是,为元素设置类并使用jQuery 选择它们。
  • @adil 是正确的。我认为您可以将变量设为全局并在 Js 文件中访问它

标签: javascript asp.net .net


【解决方案1】:

问题是 ASP.NET 不会处理你的 JS 文件并填写占位符。

一种解决方案是强制 ID 保持静态,例如:

<td id="img4" runat="server" clientidmode="static" onmouseover="ChangeColor4(this.id)" 
    style="background-image: url('images/2.jpg')">
</td>

clientidmode="static" 属性告诉 ASP.NET 不要破坏 ID。那么你甚至根本不需要使用&lt;%= img1.ClientID%&gt;

【讨论】:

    【解决方案2】:

    在aspx页面上写

    <script>
    var img1 = '<%= img1.ClientID%>';
    var img2= '<%= img2.ClientID%>';
    var img3= '<%= img3.ClientID%>';
    var img4= '<%= img4.ClientID%>';
    var imgchange= '<%= imgchange.ClientID%>';
    </script>
    

    在.js文件中做

    function ChangeColor1(elementid) {
    document.getElementById(img1).style.backgroundImage = "url('images/1.jpg')";
    document.getElementById(img2).style.backgroundImage = "url('images/2.jpg')";
    document.getElementById(img3).style.backgroundImage = "url('images/2.jpg')";
    document.getElementById(img4).style.backgroundImage = "url('images/2.jpg')";
    }
    

    试试这个对你有帮助

    【讨论】:

    • 解决了这个问题,但是当OP最终有数百个单元格时,需要添加大量Javascript代码。
    • 发布问题的人。尽管我住在英国,但这并不能使我成为先生。哈哈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    相关资源
    最近更新 更多