我已经尝试了一切来找到这个答案,现在是凌晨1点,我必须上床休息:(在我的妻子为我提供第二次离婚之前!:)
我的问题很简单就是这个,我使用google API来(localsearch,imagesearch和websearch)找到我合并到我网站的各种字符串。它们被加载到动态DIV中,每组结果都给出一个div,其中包含与其数字相关的整数。例如,
for (var i = 0; i < localSearch.results.length; i++) {
// Create HTML elements for search results
var letsseetitle = localSearch.results[i].titleNoFormatting;
letsseestreet = localSearch.results[i].streetAddress;
var letsseecity = localSearch.results[i].city;
var letsseeregion = localSearch.results[i].region;
var letsseecountr = localSearch.results[i].country;
var letsseestaticmapurl = localSearch.results[i].staticMapUrl;
var latresult = localSearch.results[i].lat;
var lng = localSearch.results[i].lng;
dv = document.createElement('div'); // create dynamically div tag
var attrname = "selectionbox" + i;
dv.setAttribute('id',attrname); //give id to it
var goFetchThis = letsseetitle + " " + letsseestreet + " " + letsseeregion + " " + letsseecountr;
dv.style.border="solid";
dv.style.padding="10px";
dv.style.backgroundColor="#80C4FF";
dv.title="Click to review this company.";
dv.innerHTML= letsseetitle + "<BR>" + letsseestreet + "<BR>" + letsseecity + "<BR>" + letsseeregion + "<BR>" + letsseecountr + "<BR>";
//var el = document.getElementById(attrname);
LoopIn = i;
// attach event onmouseclick to the created div tag
if(isIE){
dv.onclick = new Function("SelectThis(attrname, attrname)");
}
else{
dv.setAttribute("onclick", "SelectThis()");
}
document.getElementById("foundresultsdiv").appendChild( dv );
}
现在的问题是这个。在chrome,即safari和其他版本中,我对点击组件没有任何问题。 IE,当用户点击其中一个动态创建的div时,我的脚本会删除内容并将其加载到表单中,供用户提交。
执行此操作的脚本如下;
function SelectThis(e) {
var targ;
if (!e) var e = window.event;
if (!e) var e = elTags[e].getAttribute("name");
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
theId=targ.id
var TheStuffInside = document.getElementById(theId).innerHTML;
var linebyline = TheStuffInside.split("<br>");
var searchname = document.getElementById('searchname')
searchname.value = linebyline[0];
var stAddress = document.getElementById('stadd')
stAddress.value = linebyline[1];
var suburb = document.getElementById('suburb')
suburb.value = linebyline[2];
var stateLocal = document.getElementById('statelocal')
stateLocal.value = linebyline[3];
var country = document.getElementById('country')
country.value = linebyline[4];
}
现在我不能吹嘘这里,因为我根本没有写这个脚本,而且主要是它运作良好。在Firefox中除外。当我点击firefox中的一个动态div时,一切都会发生。实际上,该元素返回一个未定义的结果。我已经尝试了很多变化,从更改代码到添加事件监听器,我都没有运气。
这里的任何建议都将非常感谢。谁知道 - 你甚至可以挽救我的婚姻!:)
顺便说一下,//击败safari bug在技术上是不正确的,但我没写好! :)
有任何问题,请告诉我。
答案 0 :(得分:2)
使用JSLint检查您的代码。有很多错误。
答案 1 :(得分:1)
问题可能是您尝试访问的DIV在页面加载时不存在于DOM中。 JQuery live解决了这个问题。所以我会从那里开始。