0

私はこの答えを見つけるためにあらゆることを試しましたが、今は午前 1 時です。ベッドに行ってあきらめなければなりません :( 妻が 2 度目の離婚で私に仕える前に! :)

簡単に言えば、私の問題はこれです.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 );









        }

今問題はこれです。クロム、つまりサファリなどの両方で、オンクリックコンポーネントに問題はありません。IE では、ユーザーが動的に作成された div の 1 つをクリックすると、スクリプトがコンテンツを削除し、ユーザーが送信できるようにフォームにロードします。

これを行うスクリプトは次のとおりです。

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 の 1 つをクリックすると、何も起こりません。実際、要素は未定義の結果を返します。コードの変更からロード時のイベントリスナーの追加まで、さまざまなバリエーションを試しましたが、まったく運がありませんでした。

ここでのアドバイスは大歓迎です。誰が知っていますか-あなたは私の結婚を救うかもしれません!:)

ちなみに、//beat safariのバグは技術的には間違っていますが、私はそれを書いていませんでした. :)

ご不明な点がございましたら、お知らせください。

4

2 に答える 2

2

JSLintでコードを確認してください。エラーがたくさんあります。

于 2011-02-24T14:32:32.033 に答える
1

アクセスしようとしている DIV が、ページの読み込み時に DOM に存在しないことが問題である可能性があります。JQuery live はこの問題を解決しました。だから私はそこから始めます。

于 2011-02-24T14:30:30.023 に答える