Получить идентификатор динамически созданного DIV, не работающего в FireFox - PullRequest
0 голосов
/ 24 февраля 2011

Я попробовал все, чтобы найти этот ответ, и сейчас 1:00 утра, и я должен идти спать и сдаваться :( прежде чем моя жена подаст мне наш второй развод! :) 1001

Вкратце, моя проблема в том, что я использую API Google to (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 и других, у меня нет проблем с компонентом по нажатию.То есть, когда пользователь нажимает на один из динамически созданных элементов 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.Когда я нажимаю на один из динамических div в Firefox, НИЧЕГО не происходит вообще.Фактически, элемент возвращает неопределенный результат.Я испробовал кучу вариаций от изменения кода до добавления прослушивателей событий при загрузке, и у меня вообще не было УДАЧИ.

Любой совет здесь будет принята с благодарностью.Кто знает - вы можете даже спасти мой брак! :)

Кстати, ошибка // beat safari технически некорректна, но я ее не написал нормально!:)

Любые вопросы, пожалуйста, дайте мне знать.

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Проверьте код с помощью JSLint .Есть много ошибок.

1 голос
/ 24 февраля 2011

Возможно, проблема в том, что DIV, к которому вы пытаетесь обратиться, не существует в DOM при загрузке страницы.JQuery Live решил эту проблему.Так что я бы начал там.

...