javascript - 为什么使用 jQuery .replace 会导致网页未找到错误?

标签 javascript jquery html

我正在用 javascript/jquery 脚本编写一些 HTML。该脚本使用 for-in 循环遍历 JavaScript 对象,使用 jQuery .append 语句将 HTML 格式行中的某些模式替换为对象中的数据,最后使用 .replace 修改 DOM。在下面粘贴的代码中,您将看到一些注释掉的行。如果我运行带有注释的代码,我会得到预期的结果。然而,一旦我删除评论,我就会得到奇怪的结果。取消注释“OptionA”后,结果如下......页面加载不再起作用。该页面显示“找不到网页”消息,更令人惊讶的是,多功能框中的加载语句更改为:

file:///Users/user1/Documents/Udacity/IntroJS/frontend-nanodegree-resume/%3Cdiv%20class=%22location-text%22%3ELexington,%20KY%3C/div%3E

页面正确加载时的正常页面加载语句如下所示:

file:///Users/user1/Documents/Udacity/IntroJS/frontend-nanodegree-resume/debug.html

如果选项B取消注释,则仅显示“工作经验”一词,但不会打印日期。

代码片段:

<!DOCTYPE html>
<html>
<head>  
<meta charset="utf-8">
<title>Debug</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
<body>
<div id="main">
   <div id="workExperience" class="gray">
      <h2>Work Experience</h2>
    </div>
</div>
<script>
var HTMLworkStart = '<div class="work-entry"></div>';
var HTMLworkDates = '<div class="date-text">%data%</div>';
var HTMLworkLocation = '<div class="location-text">%data%</div>';
var work = {
        "job1":{
            "dates": "2007 to 2016",
            "location": "Raleigh, NC"
            },

            "job2":{
                "dates": "2003 to 2007",
                "location": "Los Angeles, CA"   
            },

            "job3":{
                "dates": "2000 to 2003",    
                "location": "Lexington, KY"
            }
};

            for(var job in work){
                if(work.hasOwnProperty(job))
                {
                   var dates = HTMLworkDates.replace("%data%", work[job].dates);
                   //OptionA: var location = HTMLworkLocation.replace("%data%", work[job].location);
                   //OptionB: var location = HTMLworkLocation.replace("%data%", "Raleigh, NC";
                   $("#workExperience").append(HTMLworkStart);
                   $(".work-entry:last").append(dates);
                   $(".work-entry:last").append(location);

                }
            }

</script>
</body>

</html>

为了调试这个问题,我将上面的代码片段与我正在处理的项目的其余部分隔离开来。我试图查看是否存在语法错误等。但是隔离代码会得到相同的结果。

所以我的问题是:

-为什么 jQuery .replace 会导致在这个孤立的案例中找不到网页?

-标记为 OptionA 的行有什么特别之处,它会导致整个页面加载失败,并进一步奇怪地修改多功能框中的行,如上所述?

-我的完整代码中还有另一行类似于此处示例中的“location-text”行,它不会导致任何问题。

最佳答案

将您的位置变量更改为其他名称。 location 是全局位置属性的名称,它控制窗口加载的 URL。

关于javascript - 为什么使用 jQuery .replace 会导致网页未找到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527641/

相关文章:

JavaScript 仅在该函数运行一次后才起作用

javascript - 如何阻止用户打印网页?使用 javascript 或 jquery

javascript - 网页无法自动适应移动浏览器

javascript - Cordova - 所有对象都移到左侧

javascript - 抓取 body 背景区域以在 Canvas 区域内使用

javascript - 如何知道要用javascript上传的图像的大小?

javascript - 延时后如何立即执行setTimeout函数?

javascript - 添加 (this) 关键字以单选一个元素

javascript - 如何使用 jQuery/Javascript 修改外部 CSS 文件的属性

php - 我需要在 php 文件测验中动态分配单选按钮