【问题标题】:var = Variable + 'String'var = 变量 + '字符串'
【发布时间】:2015-05-14 19:29:56
【问题描述】:

我正在尝试使用 jQuery 将文本文件动态包含到我的页面中,但我似乎无法让它使用变量作为文件路径。我尝试只使用 title.txt 而不是传递变量并且它起作用了,但是 $title + '.txt' 不起作用。

我做错了什么?

作品:

$(function () {  
    $("#list").load('test.txt');
});

尝试 1:

$(function () {
    var $title = document.getElementsByTagName("title")[0].innerHTML,
        $url = $title + '.txt';

    $("#list").load($url);
});

尝试 2:

$(function () {
    var $title = document.getElementsByTagName("title")[0].innerHTML,
        $ext = '.txt',
        $url = $title + $ext;

    $("#list").load($url);
});

尝试 3:

$(function () {
    var $title = document.getElementsByTagName("title")[0].innerHTML,

    $("#list").load($title + '.txt');
});

【问题讨论】:

  • 每次尝试的反应是什么?
  • console.log($url); 返回什么? (对于尝试 1 和 2)
  • 我不敢相信$("#list").load(test.txt); 有效。你的意思是$("#list").load("test.txt");,还是你真的有像var test = {txt: "…some url…"};这样的对象?
  • 请向我们展示您的 html 标记。 $title 实际上是否包含预期值?可能有空格吗?
  • 如果你 console.log(document.getElementsByTagName("title")[0].innerHTML) 我敢肯定你不会得到“测试”。你得到了什么?

标签: javascript jquery methods jquery-load


【解决方案1】:

试试这个,根据聊天中的评论:

$(function () {
    var $title = encodeURI( $('title').text() ), 
        $url = $title + '.txt';

    $("#list").load($url);
});

【讨论】:

  • 好奇:除了空格到 %20 之外,encodeURI 还会发生什么变化?我正在处理 100 多个文件。
  • 没关系,文件名只要没有:", / ? : @ & = + $ #" +1 就可以更好地解决页面标题中的潜在字符。
  • @Jameel 如果他们可能有这些字符,请使用encodeURIComponent 而不是encodeURI。 :)
【解决方案2】:

这是由于文件名中的空格造成的。使用 replace() 将空格转换为 %20。

$(function () {
    var $title = $(document).attr('title'),
        $ext = '.txt',
        $url = $title + $ext,
        $cleanurl = $url.replace(/\s/g,"%20");

    $("#list").load($cleanurl);

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多