无法获取未定义或空引用的属性“样式”

时间:2014-04-28 10:49:55

标签: javascript html asp.net

我一直在网上寻找我的文本框的水印效果以获得一些帮助,并找到了一段代码如下:

使用Javascript:

function WaterMark(objtxt, event) {
var defaultText = "Username";
var defaultpwdText = "Password";
// Condition to check textbox length and event type
if (objtxt.id == "tb_Username" || objtxt.id == "tb_Password") {
    if (objtxt.value.length == 0 & event.type == "blur") {
        //if condition true then setting text color and default text in textbox
        if (objtxt.id == "tb_Username") {
            objtxt.style.color = "Gray";
            objtxt.value = defaultText;
        }
        if (objtxt.id == "tb_Password") {
            document.getElementById("<%= tb_TempPassword.ClientID %>").style.display = "block";
            objtxt.style.display = "none";
        }
    }
}
// Condition to check textbox value and event type
if ((objtxt.value == defaultText || objtxt.value == defaultpwdText) & event.type == "focus") {
    if (objtxt.id == "tb_Username") {
        objtxt.style.color = "black";
        objtxt.value = "";
    }
    if (objtxt.id == "tb_TempPassword") {
        objtxt.style.display = "none";
        document.getElementById("<%= tb_Password.ClientID %>").style.display = "";
        document.getElementById("<%= tb_Password.ClientID %>").focus();
    }
}

}

然后HTML

<asp:TextBox runat="server" ID="tb_Username" Text="Username" onblur="WaterMark(this, event);" onfocus="WaterMark(this, event);" />

<asp:TextBox runat="server" ID="tb_TempPassword" Text="Password" onfocus="WaterMark(this, event);" ForeColor="Gray" />

<asp:TextBox runat="server" ID="tb_Password" TextMode="Password" text="Password" Style="display:none" onblur="WaterMark(this, event);"/>

但由于某些原因,当我运行我的代码时,用户名框工作正常,但密码框出现错误说:

0x800a138f - JavaScript runtime error: Unable to get property 'style' of undefined or null reference

我一直在网上寻找解决方案但没有任何工作? 这是因为我的Textbox链接到CSS样式表吗?

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

试试这个..

    var id=objtxt.id.toString();
    document.getElementById(id).setAttribute("style", "color:Gray");

答案 1 :(得分:0)

请检查您是否获得了价值 是document.getElementById("<%= tb_Password.ClientID %>")还是没有?

document.getElementById("<%= tb_Password.ClientID %>")的值不应为空。

您还可以使用.hide().show()功能。

答案 2 :(得分:0)

在我的情况下,以下工作 -

我在关闭标记之前放置了脚本(因为我正在使用母版页)而不是写getelementbyid(menuid.UniqueID)我写了getelementbyid(menuid.ClientID)

答案 3 :(得分:0)

我也面临这个问题,我自己解决了。该问题与面板有关,此面板可见属性为false。而不是将其设置为显示为无值。现在它的工作。