我遇到了一些javascript问题,我写了一个正则表达式来测试元素ID的字母,如果有字母,它会隐藏另一个元素ID。这项工作,我遇到的问题是,显示id确实为空时隐藏的元素。但是,要注意的是,此ID是使用令牌填充的。您可以看到下面的代码,因为我刚刚在临时ID中添加了一些代码,以使其正常工作,所以它有些草率。
<script type="text/javascript">
$(document).ready(function(){
var regex = /^[A-Za-z]+$/;
if (!regex.test($("#signinwelcome").val()))
{$("#signinlink").hide();}
else{$("#signinlink").show();}
});
</script>
<div id="headerwelcome"><div id="signinlink"><a href="default.aspx?Page=Logon" >SIGN IN / LOG OUT</a></div>
WELCOME <a href="Default.aspx?Page=My Account Profile"><div id="signinwelcome" style="display: inline;">@@FirstName</div></a>!</div>
因此,在网页上,如果您尚未登录,则@@ FirstName为空白,不显示,它为空。登录后,将使用您的姓名填充#signinwelcome,然后应隐藏“登录/注销”,当您注销时,应重新出现“登录/注销”。事实并非如此,它仍然是隐藏的。任何帮助将不胜感激。
最佳答案
$("#signinwelcome").text()
将返回div元素内的文本。 .val()
用于表单元素,例如文本,单选,复选框等。
另外,看看toggle
方法。它需要一个参数来进行接通与断开。您的代码可以重写为:
$(document).ready(function(){
var regex = /^[A-Za-z]+$/;
var is_signed_in = regex.test($("#signinwelcome").text());
$("#signinlink").toggle(is_signed_in);
});