【发布时间】:2013-07-01 15:20:23
【问题描述】:
因此,可以在下面找到的 Javascript 代码似乎无法正常运行。
目标是让地图下方的文本在房间悬停时发生变化。
我认为,提取数据的 JSON (zadias.me/SVG/rooms.json) 数据似乎是我的错误所在。当我通过放置将在文本字段中打印的 .innerHTML 语句来测试/调试代码时,如果我将 .innerHTML 放在 $.ajax 之前,它将起作用,但是,如果我将 .innerHTML 函数放在“成功”部分的.ajax,它不起作用..
Javascript:
$(document).ready(function(){
var json = (function () { //this function obtains the data
var json = null;
$.ajax({
'async': false,
'global': false,
'url': 'http://zadias.me/SVG/rooms.json',
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json;
})();
function hashTag(){
var hashTag, hash2;
hashTag = location.hash; //obtains the part of the URL with the hash tag and what follows
hashTag = hashTag.replace(/#*/, ''); //replaces the hash tag
if(hashTag.length > 0){
for(i=0 ; i<json.rooms.length ; i++){
if (json.rooms[i].roomId == hashTag) //linear search through array of rooms to see if any equal the hashTag
{
document.getElementById('room_info').innerHTML = '<img src="images/' + json.rooms[i].image + '" /><h4>' + json.rooms[i].name + '</h4>' + json.rooms[i].HTMLdescrip;
} //loads the data from the JSON data.
}
}
};
function setHash(){
window.location.hash = this.id; //creates the hash link based on the object's id (object id acquired from the JSON data) and sets it
};
function setHTML(){
for(i=0 ; i<json.rooms.length ; i++){
if (json.rooms[i].roomId == this.id)
{
document.getElementById('room_info').innerHTML = '<img src="images/' + json.rooms[i].image + '" /><h4>' + json.rooms[i].name + '</h4>' + json.rooms[i].HTMLdescrip;
}
}
};
window.onload = hashTag();
$(".active").click(setHash);
$(".active").mouseenter(setHTML);
//$(".active").mouseover(setHTML);
$(".active").mouseleave(hashTag);
});
我知道它有点本地化,我该如何更改?
【问题讨论】:
-
你能把你的相关代码贴在这里吗?
-
'async': false,是一个非常糟糕的主意。在 ajax 调用期间锁定浏览器。 -
Uncaught TypeError: Cannot read property 'style' of null在PresParkEisenhower2.svg的第 1 行。document.body.style导致它。 -
谢谢@Archer!我摆脱了它,我似乎没有看到任何改善..@jfriend00 我尝试摆脱
'async':false,但它似乎没有多大作用。
标签: javascript jquery svg hover