2009-03-11 3 views
2

Ich habe eine einfache Seite mit einem einzigen gerenderten iFrame. Es gibt einen Link namens "Add File" und unauffällig möchte ich ein Ereignis an den Anker "Add File" anhängen, so dass beim Anklicken ein neuer iFrame unterhalb des bestehenden eingefügt wird, wobei die ID des iFrames inkrementiert wird.Unauffälliges JavaScript zum Einfügen eines Elements, das eine Rails-URL von Rails enthält?

Ein Beispiel für die iFrame wäre: Dann

<iframe name="uploadForm1" id="uploadForm1" src="<%= upload_file_url %>" height="50" width="800" frameborder="0" scrolling="no"></iframe> 

, wenn Sie auf den Button "Datei hinzufügen" Taste I mit enden würde:

<iframe name="uploadForm1" id="uploadForm1" src="<%= upload_file_url %>" height="50" width="800" frameborder="0" scrolling="no"></iframe> 
<iframe name="uploadForm2" id="uploadForm2" src="<%= upload_file_url %>" height="50" width="800" frameborder="0" scrolling="no"></iframe> 

Was wäre der beste Ansatz (jQuery oder Prototype) um das zu begleiten?

Es scheint jedoch sehr trivial zu sein, da ich die upload_file_url-Route rendern muss, bin ich mir nicht sicher, wie ich es angehen soll, ohne viel Zeit zu verschwenden!

Jede Hilfe wird geschätzt!

Antwort

5

Dies sollte es für Sie tun:

var g_maxNum = 1; // The latest iframe number 

function copyIframe() 
{ 
    // Get the latest iframe 
    var iframe = document.getElementById('uploadForm' + g_maxNum); 
    g_maxNum++ 

    // Create a new iframe by cloning the existing one 
    var newIframe = iframe.cloneNode(true); 
    // Update the properties 
    newIframe.name = 'uploadForm' + g_maxNum; 
    newIframe.id = newIframe.name 

    // Insert it after the last iframe 
    iframe.parentNode.insertBefore(newIframe, iframe.nextSibling); 
} 
+0

Schön geschrieben, aber es ist fest auf 'iframe.parentNode', die null zurückkehrt. Fehlerbehebung jetzt. – mwilliams

+0

Hoppla, ich hatte einen extra .cloneNode drin (die erste Zeile der Funktion) - behoben – Greg

+0

Vielen Dank. Ich habe Yahudas jQuery-Buch, ich muss wirklich drüber nachdenken. Ich weiß, dass ich die Funktionen des Klons schon einmal gesehen habe, aber noch nicht einmal in meiner Nähe war. Das war eine sehr elegante Lösung. Vielen Dank! – mwilliams

Verwandte Themen