2017-09-02 124 views
2

我有我的JavaScript函数在JavaScript文件,因为此功能使用我的大部分页面。Javascript无法找到元素ID

function setSecondaryItem() { 
var select = document.getElementById("<%= SecondaryArea.ClientID %>"); 
var len = select.length; 
... 
...} 

我也把这个在我的网页

<script type="text/javascript" src="../NormalUseFuction.js"></script> 

我调用此函数当下拉列表改变

<asp:DropDownList runat="server" ID="PrimaryArea" onchange="setSecondaryItem()" > 
    <asp:ListItem Value="" Text="select..." Selected="True"></asp:ListItem> 
    <asp:ListItem Value="A" Text="A.."></asp:ListItem> 
    <asp:ListItem Value="B" Text="B.."></asp:ListItem> 
    <asp:ListItem Value="D" Text="D.."></asp:ListItem> 
    <asp:ListItem Value="E" Text="E.."></asp:ListItem> 
    <asp:ListItem Value="F" Text="F.."></asp:ListItem> 
    </asp:DropDownList> 
<asp:DropDownList runat="server" ID="SecondaryArea" > 
    <asp:ListItem Value="1" Text="1.."></asp:ListItem> 
    <asp:ListItem Value="2" Text="2.."></asp:ListItem> 
    <asp:ListItem Value="3" Text="3.."></asp:ListItem> 
    <asp:ListItem Value="4" Text="4.."></asp:ListItem> 
    <asp:ListItem Value="5" Text="5.."></asp:ListItem> 
</asp:DropDownList> 

但是我发现,这会得到一个错误:遗漏的类型错误:不能读取属性'长度'null

任何人都可以告诉我如何解决这个问题?

注意:实际上是页面中的两个下拉列表。更改dropdownlist1将调用该函数来更改dropdownlist2。

+0

发表您的HTML上面 – Sajeetharan

+1

做一个视图源检查在客户端产生的seconday区域的ID,并匹配它在功能上。我不认为它已经正确呈现在js文件中。将次区域客户端ID作为参数传递给setSecondaryItem()函数,如'<%= SecondaryArea.ClientID%>'。 – Amit

+0

我已更新我的html –

回答

1

您使用的这个<%= SecondaryArea.ClientID %>被称为Code Block。 你也可以参考this question在stackoverflow更多细节。

代码块不能放在外部JavaScript文件中,因为它们需要呈现为C#代码。

由于您的JavaScript函数setSecondaryItem在许多页面中使用,当然重复它并不好,所以您需要在外部JavaScript文件中定义您的函数,并将您的代码块(在您需要的任何页面中)一个论点。

您的外部JavaScript文件:

function setSecondaryItem(secondaryAreaId) { 
    var select = document.getElementById(secondaryAreaId); 
    var len = select.length; 
    ... 
} 

而在你.aspx文件:

<script type="text/javascript" src="../NormalUseFuction.js"></script> 

<script type="text/javascript"> 
    setSecondaryItem("<%= SecondaryArea.ClientID %>"); 
</script> 
+1

这项工作后,无法读取属性'选项'null!谢谢。 –

0

select.length你应该得到项目的长度,如果仍然没有尝试下面的代码行,可能会帮助你。

select.options.length 
+0

我收到一个错误:尝试此 –