我遇到了一些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);
});

07-24 17:42