thymeleaf 的th:if 用原生html+javascript实现

完善版

整体思路是用javascript读取到值,然后根据值来判断,如果为真则删除掉一个div,如果为假就删除掉另一个div这样实现if。

一开始的thymeleaf页面

<div class="fr">
        <th:block th:unless="${session.newBeeMallUser==null}">
            <div class="user">
                <ul class="selector">
                    <li>
                        <a th:href="@{/personal}">
                            个人中心
                        </a>
                    </li>
                    <li>
                        <a th:href="@{/orders}">
                            我的订单
                        </a>
                    </li>
                    <li>
                        <a th:href="@{/logout}">
                            退出登录
                        </a>
                    </li>

                </ul>
                <a href="##" class="username">
                    <th:block th:text="${session.newBeeMallUser.nickName}"></th:block>
                    <i class="iconfont icon-down"></i>
                </a>
            </div>
            <div class="shopcart">
                <a th:href="@{/shop-cart}" style="color: white;"><i class="iconfont icon-cart"></i>
                    购物车(
                    <th:block th:text="${session.newBeeMallUser.shopCartItemCount}"></th:block>
                    )</a>
            </div>
        </th:block>

        <th:block th:if="${session.newBeeMallUser==null}">
            <ul class="login">
                <li><a th:href="@{/login}">登录</a></li>
                <li><a th:href="@{/register}">注册</a></li>
            </ul>
            <div class="shopcart">
                <a th:href="@{/login}" style="color: white;"><i class="iconfont icon-cart"></i>
                    购物车(0)</a>
            </div>
        </th:block>
</div>

转换之后

由于javascript是不能取出session里的值的,所以需要在上面先弄一个隐藏起来的p标签来让它取到session里的值,然后再在js代码里面取出p标签的值。

<p style="color: #333333" hidden="hidden" id="nickname">{$user.nick_name}</p>

html

<div id="z" class="fr">
    <div id="yes" class="fr">
        <div class="user">
            <ul class="selector">
                <li>
                    <a href="personal">
                        个人中心
                    </a>
                </li>
                <li>
                    <a href="my_orders">
                        我的订单
                    </a>
                </li>
                <li>
                    <a href="/index.php/admin/mall/loginout" >
                        退出登录
                    </a>
                </li>
            </ul>
                <p style="color: antiquewhite">
                    {$user.nick_name}
                </p>
                <i class="iconfont icon-down"></i>
        </div>

        <div class="shopcart">
            <a href="cart" style="color: white;"><i class="iconfont icon-cart"></i>
                购物车( )
            </a>
        </div>
    </div>
    
    <div id="no" class="fr">
        <ul class="login">
            <li><a href="login">登录</a></li>
            <li><a href="register">注册</a></li>
        </ul>
        <div class="shopcart">
            <a href="login" style="color: white;"><i class="iconfont icon-cart"></i>
                购物车(0)</a>
        </div>
    </div>
    <p style="color: #333333" hidden="hidden" id="nickname">{$user.nick_name}</p>
</div>

javascript

<script>
    window.onload = function(){

        var idn = document.getElementById("no");
        var idy = document.getElementById("yes");
        var value = document.getElementById("nickname").innerHTML;
        if(value){
            //就如果有这个用户名的话,应该把no删除
            document.getElementById("z").removeChild(idn);
        }
        else{
        	//就如果没有这个用户名的话,应该把yes删除
            document.getElementById("z").removeChild(idy);
        }
    }

</script>

这样就可以实现,但是有时候会卡,需要刷新一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值