Javascript Can';t使用div元素上的runat访问JS函数

Javascript Can';t使用div元素上的runat访问JS函数,javascript,html,asp.net,Javascript,Html,Asp.net,我在使用document.getElementById(“#divexterUser”).style.display=“block”的Javascript时遇到问题使用runat=“server”时 我有这个功能: function displayHideShowDivExtern(element) { switch(element.value) { case "S": document.getElementById("divOExternS").style.displa

我在使用
document.getElementById(“#divexterUser”).style.display=“block”的Javascript时遇到问题使用runat=“server”时

我有这个功能:

function displayHideShowDivExtern(element) {
switch(element.value) {
    case "S":
        document.getElementById("divOExternS").style.display = "block";
        document.getElementById("divOExternM").style.display = "none";
        break;
    default:
        document.getElementById("divOExternS").style.display = "none";
        document.getElementById("divOExternM").style.display = "block";
}
}

在我的aspx上,当我在div元素上放置
runat=“server”
时,我无法访问我的DropDownList元素(在javascript函数中)

SCRIPT5007:无法获取属性“style”的值:对象为null或未定义


外行

s
T
M
O


在使用div上的runat之前,我可以毫无问题地访问它。我不明白为什么

因为
runat=server
属性,您可以使用:
“”
尝试按以下方式更改代码:

function displayHideShowDivExtern(element) {
switch(element.value) {
    case "S":
        document.getElementById("<%=divExternUser.ClientID%>").style.display = "block";
        document.getElementById("<%=divInternUser.ClientID%>").style.display = "none";
        break;
    default:
        document.getElementById("<%=divExternUser.ClientID%>").style.display = "none";
        document.getElementById("<%=divInternUser.ClientID%>").style.display = "block";
}
函数显示HIDESHOWDIVIEXTERN(元素){
开关(元素值){
案例“S”:
document.getElementById(“”.style.display=“block”;
document.getElementById(“”.style.display=“无”;
打破
违约:
document.getElementById(“”.style.display=“无”;
document.getElementById(“”.style.display=“block”;
}

尝试在div标记中添加属性clientdmode='static'。

在代码中找不到任何id为divExternUser或diviternuser的元素。因此,我创建了两个div,为它们提供了这些id

以这种方式更改dropdownlist时调用displayHideShowDivExtern()函数

onchange="displayHideShowDivExtern(this)" 
HTML:


这是我的朋友
这是我的用户
javaScript:

<script type="text/javascript">
    function displayHideShowDivExtern(element) {
        alert();
        switch (element.value) {
            case "S":
                document.getElementById("divExternUser").style.display = "block";
                document.getElementById("divInternUser").style.display = "none";
                break;
            default:
                document.getElementById("divExternUser").style.display = "none";
                document.getElementById("divInternUser").style.display = "block";
         }
     }
</script>

函数displayHideShowDivExtern(元素){
警惕();
开关(元素值){
案例“S”:
document.getElementById(“divExternUser”).style.display=“block”;
document.getElementById(“用户”).style.display=“无”;
打破
违约:
document.getElementById(“divExternUser”).style.display=“无”;
document.getElementById(“用户”).style.display=“块”;
}
}
因此,在一天结束时,无论您是否使用runat=“server”,您都可以使用该元素的id从客户端访问该元素

因为,虽然它是一个服务器端控件,但最终将被呈现为纯HTML元素,然后转换为DOM元素,以便在客户端进行操作

注意:如果js代码位于外部文件中,则必须将该脚本的引用添加到页面中,以便使用

<script src="pathToYourJSFile/yourjsFile.js"></script>


就是这样。它会起作用。

你不应该在p元素中放一个div元素。注意:这与你的问题无关。我用一个清晰的div元素更改了我的p。是的,我已经用过了。我发现了同样的错误:SCRIPT5007:无法获取属性“style”的值:对象为null或未定义抱歉,但我写了一个旧代码,我编辑了我的问题n、 更改id对应于它们各自的元素。它仍然有效。@kaub0st3r请仔细更新您的问题。还没有任何元素包含divExternS或divExternM。是的,正在工作,谢谢,但我不明白为什么在代码中使用javascript(aspx页)时可以工作但不是在.js文件中。@kaub0st3r,检查我在答案中添加的注释部分。
<script type="text/javascript">
    function displayHideShowDivExtern(element) {
        alert();
        switch (element.value) {
            case "S":
                document.getElementById("divExternUser").style.display = "block";
                document.getElementById("divInternUser").style.display = "none";
                break;
            default:
                document.getElementById("divExternUser").style.display = "none";
                document.getElementById("divInternUser").style.display = "block";
         }
     }
</script>
<script src="pathToYourJSFile/yourjsFile.js"></script>