【问题标题】:How to hide or show a div based on its contents如何根据内容隐藏或显示 div
【发布时间】:2025-11-26 13:20:03
【问题描述】:

您好,我正在尝试根据 AJAX 响应隐藏/显示div。我真的不知道,有没有办法?

如果响应是错误的,则显示错误文本并显示 div(相同的 div)。

如果响应不是错误,则显示成功文本并隐藏一个 div(相同的 div)。

这就像脸书功能。

我应该使用 javascript 函数来做到这一点。

编辑
从 OP 的重复问题中添加了信息:

有我的 div。

<div id="messages"></div>
<div id="edit-address-book">
codes to edit the address book , input type - text, select , textearea etc...
</div>

下面是我的一个简单的 ajax 请求。 这是我使用的 ajax 库 -> http://en.dklab.ru/lib/JsHttpRequest/

 // Create new JsHttpRequest object.
 var req_update = new JsHttpRequest();
 // Code automatically called on load finishing.
 req_update.onreadystatechange = function() {
  if (req_update.readyState == 4) {
  document.getElementById("messages").innerHTML = req_update.responseJS.messages;
  document.getElementById("changed_address").value = req_update.responseJS.changed_address;
  }
 }

 document.getElementById("messages").innerHTML = req_update.responseJS.messages;

 req_update.responseJS.messages; // This is ajax respond part.

在地址簿 div 上,当客户点击更新按钮时,来自 ajax 的错误或成功消息会响应消息 div。

例如:

错误信息: ----------------- 您的名字必须至少包含 2 个字符。 您的姓氏必须至少包含 2 个字符。 您的街道地址必须至少包含 5 个字符。 您的城市必须至少包含 3 个字符。 您所在的州必须至少包含 2 个字符。 成功讯息: -------------------- 您的通讯簿已成功更新。 (

我已经在下面简单地尝试过,但它不起作用:

<script language="javascript" type="text/javascript">
if ( document.getElementById("messages").innerHTML == "<?php echo SUCCESS_MESSAGE; ?>" ) {
 hide_div('edit-address-book); //The div to hide the address book entries.
}
</script>

如果 jquery javascript 库中有建议/解决方案,我也可以使用它。

【问题讨论】:

  • 请提供更多上下文;你想在 jQuery、直接 JS 等中实现这一点吗?还显示你正在处理的任何代码。
  • 确定你能做到。您需要使用自己的逻辑来检测/解析错误,除非您使用 jQuery、Prototype、Dojo 等框架。
  • “错误”是什么意思?您的意思是传输或连接错误,还是由您在服务器上的逻辑生成的错误(即:正在向客户端报告的数据库错误)?

标签: javascript ajax


【解决方案1】:

应该这样做。

已编辑

<body>

<script type="text/javascript">
    function teste(divId, text){
        var myDiv = document.getElementById(divId);

        if (myDiv.innerText.indexOf(text, 0) != -1) //could be replaced by any error veryfing logic
        {
            myDiv.style.visibility = "hidden";
            return 'Message 1';
        }
        else
        {
            myDiv.style.visibility = "visible";
            return 'Message 2';
        }
    }

</script>


<div id="MyDiv">blabla</div>

<script type="text/javascript">
    document.write(teste('MyDiv', 'blabla'));
</script>



</body>

【讨论】:

  • 这只能满足一半的要求。它还需要能够显示 div。
  • 至少我给了首发,而你给了我-1?你真的认为答案没有用吗?你为什么不发布一些有用的东西而不仅仅是抱怨?
【解决方案2】:

我终于找到了解决方案。它将帮助使用 AJAX 库“JSHttpRequest”(http://en.dklab.ru/lib/JsHttpRequest/)的用户。 这里是:

查找:

    document.getElementById("messages").innerHTML = req_update.responseJS.messages;
    document.getElementById("changed_address").value = req_update.responseJS.changed_address;

###替换为:

    document.getElementById("messages").innerHTML = req_update.responseJS.messages;

    if (req_update.responseJS.messages == "<?php echo SUCCESS_MESSAGE; ?>") {
        hide_div("edit-address-book");
    }

    document.getElementById("changed_address").value = req_update.responseJS.changed_address;
    }

【讨论】:

    最近更新 更多