JS基于外部文件中的文本显示/隐藏元素

时间:2015-05-14 13:05:50

标签: javascript content-management-system

首先让我说,如果有更好的方法来实现我的目标,请告诉我。

我为一家餐馆创建了一个网站。它使用简单的PHP CMS来创建导入到站点的几个不同区域的文本文件。其中一个是菜单。

他们可以在CMS中更改“假日菜单”链接的文本,但是当隐藏此菜单时,只需删除链接文本(通过CMS)就会留下空的可点击空间。

当外部文件中没有文本时,我可以使用JS隐藏此链接吗?我试过了:

var txtFile = new XMLHttpRequest();
txtFile.open("GET", "/dynamic/holiday.txt", true);
txtFile.onreadystatechange = function() {
  if (txtFile.length > 1) {  
         $('.holiday').show();
    }
    else {
        $('.holiday').hide();
    }
  }

 $('.holiday').each(function() {
    var len = $('.holiday').text().length  
    if(len > 1){
        $('.holiday').show();
    }
    else {
        $('.holiday').hide();
    }
});

我确信这两种尝试都不会对你们这些人显而易见的原因起作用。第二个不起作用,因为此元素在HTML中始终技术上为空,并且无论如何都隐藏链接。我想。

我甚至关闭了吗?这是一个过于复杂的解决方案,应该放弃吗?非常感谢您的想法。

1 个答案:

答案 0 :(得分:0)

您的GET个请求格式错误且不完整。您没有在请求上调用所需的.send(),并且在onreadystatechange处理函数中需要使用txtFile.responseText,因为您的txtFile变量实际上是请求,而不是归档。

但是,您使用jQuery的最佳和最简单的选择是使用$.ajax$.get(),因为它可以自动处理各种数据类型(在您的情况下为text) :

$.ajax({
    url: "/dynamic/holiday.txt",
    dataType: "text",
    success: function (data) {
        if (data.length > 1) {  
            $('.holiday').show();
        }
        else {
            $('.holiday').hide();
        }            
    }
});