带有动态ID的getElementByID

时间:2014-06-04 12:34:50

标签: javascript html asp.net

您好我的ASP SharePoint网页部件页面中的javascript存在问题。该页面的构建与任何其他ASP页面相同,因此它在SharePoint中托管的事实不应该有任何区别。

问题在于我在页面中的javascript。我有由8个单元组成的Html表。对于这些单元格中的每一个,我在其中显示不同的div,其中包含不同的数据。

问题在于我试图显示的Div的ID。 Divs ID在运行时更改,但也每天更改,因此无法手动输入。

HTML:

<div id="Main" style="display: none;
    <div id="hover1" runat="server" style="display: none">
        Test
    </div>
</div>

<table id="Table3" runat="server" >
    <tr id="Tr8" runat="server" >
        <td id="status1" runat="server" onmouseover="getDataXML('hover1')" onmouseout="hideDiv('hover1')">
            Received
        </td>
    </tr>
</table>

id&#39; hover1&#39;在运行时被替换为&#39; ctl00_m_g_6ddac285_ceb9_4b5a_9095_c4b216cf7dfd_ctl00_hover1&#39;

使用Javascript:

function getDataXML(getID) {
        document.getElementById('Main').style.display = "block";
        document.getElementById(getID).style.display = "block";
    };

如果我使用生成的ID并对其进行硬编码,但javascript会有效,但ID会每天更改,这意味着它会成为一个问题。任何帮助,我将不胜感激

此致

2 个答案:

答案 0 :(得分:2)

将clientIdMode = static设置为元素

 <div id="hover1" clientIdMode="static" runat="server" style="display: none">

答案 1 :(得分:0)

你必须像这样传递clientId:

onmouseover="getDataXML('<%=hover1.ClientID %>')"

或者将 ClientIDMode 设置为静态,但在这种情况下,如果您在aspx中更改div id,则必须明确更改您使用Id的位置,它将是很难抓住没有编译时错误。