首先让我说,如果有更好的方法来实现我的目标,请告诉我。
我为一家餐馆创建了一个网站。它使用简单的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中始终技术上为空,并且无论如何都隐藏链接。我想。
我甚至关闭了吗?这是一个过于复杂的解决方案,应该放弃吗?非常感谢您的想法。
答案 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();
}
}
});