在html中使用javascript变量隐藏/显示html标记

时间:2016-06-16 16:57:23

标签: javascript html asp.net cookies

我正在尝试根据cookie值显示/隐藏html标记。 我可以通过为该锚标签分配ID并在javascript中将其显示为none来实现此目的,但我只想在html中

示例代码:

从Cookie获取CompanyName。

$(document).ready(function () {
   var companyName = getCookie("GlobalCompanyName"));
});

想要做这样的事情。

<div class="coach_title_row">
  <% if (companyName == "XYZ" )
  { %>
     <a class="new" href="<%= this.ResolveUrl("~/")%>Reports/Tool/Step1.aspx" title="Create New Report"><img src="<%= this.ResolveUrl("~/")%>Static/V3/Images/ReportingTool/new_report.png"/></a>
<% } %>
</div>

我知道如何使用jQuery执行此操作,但我只是不想使用它。我问是否可以在html中使用jQuery变量进行比较(在if / else语句中)。

1 个答案:

答案 0 :(得分:0)

起初我想知道为什么不只是使用常规的javascript / jquery?但是,在查看您提供给我们的代码时,我认为您可能需要一种解决方法。解决方案似乎相当简单,所以我想我可能不太了解您的问题,或许有关您正在使用的堆栈的更多细节会有帮助吗?

这是使用简单的简单jQuery执行此操作的方法。但是,根据您的设置,下面的解释很可能无法解决这个问题。

var companyName;
var myHtml = "<a href="#">Whatever you need here</a>;

jQuery(document).ready(function () {
   companyName = getCookie("GlobalCompanyName"));
   if(companyName == 'xyz'){
     jQuery('.coach_title_row).append(myHtml);
   }
});

现在,说过,看起来你正在使用模板表示法中的ASP。为什么不在控制器中获取cookie值并将其传递给您的视图?它比在这种情况下尝试使用javascript要干净得多。

此外,如果您使用javascript插入包含模板化属性的html,则可能会遇到延迟加载的一些问题。 html将加载,但后端的东西都不会呈现,因为javascript正在客户端运行时插入此内容。

解决方法是将链接插入到您的视图中,然后使用javascript来显示&#39;如果cookie正确,则加载页面上的div。

html:

div class="coach_title_row">

     <a class="new" **style="display"none"**; href="<%= this.ResolveUrl("~/")%>Reports/Tool/Step1.aspx" title="Create New Report">

  <img src="<%=   this.ResolveUrl("~/")%>Static/V3/Images/ReportingTool/new_report.png"/>

    </a>

</div>

脚本:

var companyName;

jQuery(document).ready(function () {
   companyName = getCookie("GlobalCompanyName"));
   // Instead just show the link already loaded, given cookie is correct
   if(companyName == 'xyz'){
     jQuery('.new').css('display','block');
   }
});