2011-01-05 25 views
1

ich wie ein Skript haben unterwas bedeutet das Javascript bedeuten

 qq.UploadHandlerForm = function(o){ 
     this._options = { 
      action: '/upload', 
      onComplete: function(id, fileName, response){} 
     }; 
     qq.extend(this._options, o); 

     this._inputs = {}; 
    }; 

qq.UploadHandlerForm.prototype = { 
    add: function(fileInput){ 
     fileInput.setAttribute('name', 'qqfile'); 
     var id = 'qq-upload-handler-iframe' + qq.getUniqueId();  

     this._inputs[id] = fileInput; 

     // remove file input from DOM 
     if (fileInput.parentNode){ 
      qq.remove(fileInput); 
     } 

     return id; 
    }, 
    upload: function(id, params){       
     var input = this._inputs[id]; 

     if (!input){ 
      throw new Error('file with passed id was not added, or already uploaded or cancelled'); 
     }     

     var fileName = this.getName(id); 

     var iframe = this._createIframe(id); 
     var form = this._createForm(iframe, params); 
     form.appendChild(input); 

     var self = this; 
     this._attachLoadEvent(iframe, function(){    
      self._options.onComplete(id, fileName, self._getIframeContentJSON(iframe)); 

      delete self._inputs[id]; 
      setTimeout(function(){ 
       qq.remove(iframe); 
      }, 1); 
     }); 

     form.submit();   
     qq.remove(form);   

     return id; 
    }, 
    cancel: function(id){   
     if (id in this._inputs){ 
      delete this._inputs[id]; 
     }   

     var iframe = document.getElementById(id); 
     if (iframe){ 
      iframe.setAttribute('src', 'javascript:false;'); 

      qq.remove(iframe); 
     } 
    }, 
    getName: function(id){ 
     // get input value and remove path to normalize 
     return this._inputs[id].value.replace(/.*(\/|\\)/, ""); 
    }, 
    _attachLoadEvent: function(iframe, callback){ 
     qq.attach(iframe, 'load', function(){ 
      if (!iframe.parentNode){ 
       return; 
      } 
      if (iframe.contentDocument && 
       iframe.contentDocument.body && 
       iframe.contentDocument.body.innerHTML == "false"){ 
       return; 
      } 

      callback(); 
     }); 
    }, 
    _createIframe: function(id){ 
     var iframe = qq.toElement('<iframe src="javascript:false;" name="' + id + '" />'); 
     iframe.setAttribute('id', id); 

     iframe.style.display = 'none'; 
     document.body.appendChild(iframe); 

     return iframe; 
    }, 
    _createForm: function(iframe, params){ 
     var form = qq.toElement('<form method="post" enctype="multipart/form-data"></form>'); 
     var queryString = ''; 
     for (var key in params){ 
      queryString += "/"+ encodeURIComponent(params[key]); 
     } 

     form.setAttribute('action', this._options.action + queryString); 
     form.setAttribute('target', iframe.name); 
     form.style.display = 'none'; 
     document.body.appendChild(form); 

     return form; 
    } 
}; 

Ich möchte wissen, was die „_“ für verwendet wird, und was „_createIframe: function (id) {}“ genannt ? Und was heißt "getName: function (id)"?

Zweitens möchte ich den getName innerhalb der "_createForm: Funktion (iframe, params) {}" verwenden. Wie kann ich es tun? Ich habe versucht, so etwas wie

_createForm: function(id,iframe, params){var fn= this.getName(id)} 

bekam aber einen Fehler


EDIT: Hinzufügen von Informationen, die als Antwort gepostet.

Wenn ich

_createForm: function(iframe, params){ 
    var fname = this.getName(id); 
    } 

Ich habe Fehler "id ist nicht definiert". Dann versuche ich

_createForm: function(id, iframe, params){ 
    var fname = this.getName(id); 
    } 

Ich habe Fehler „this._input [...]. Wert ist null oder kein Objekt“

+1

Haben Sie nie eine befriedigende Antwort auf alle Ihre Fragen erhalten? –

+0

Was * ist * der Fehler? –

+0

Jetzt verstehe ich Ihre Frage El Ronnoco, nur die alten Antworten angekreuzt –

Antwort

3

Ich möchte wissen, was die „_“ für verwendet wird,

Die _ ist nur das erste Zeichen im Namen.

... was heißt "_createIframe: function (id) {}"? Und was heißt "getName: function (id)"?

Sie sind Funktionen, die dem Prototypobjekt für die Klasse UploadHandlerForm zugewiesen wurden. Sie sind für alle Instanzen dieser Klasse zugänglich.

Zweitens möchte ich den getName innerhalb der "_createForm: function (iframe, params) {}" verwenden. Wie kann ich es tun?

Von innen _createForm, dann würden Sie es gerne nennen:

this.getName('some id'); 

Wenn Sie einen Fehler finden fühlt, müssen Sie uns sagen, was der Fehler ist.

+0

@runrunforest: So scheint es, als ob Sie erfolgreich die 'this.getName()' Funktion aufrufen, wenn Sie den 'id' Parameter verwenden, aber es ist nicht ' t eine Eingabe finden. Ich nehme an, dass etwas mit der 'id', die Sie übergeben, falsch ist, wenn Sie '_createIframe()' aufrufen. Ich nehme an, jemand anderes hat dieses Skript geschrieben. Das Problem beim Hinzufügen von Argumenten zu einer Funktion wie Sie ist, dass jeder andere Code, der diese Funktion aufruft, bricht. Es wäre besser, wenn Sie 'id' als * letztes * Argument hinzugefügt hätten. '_createForm: function (iframe, params, id) {', dann vergewissere dich, dass du eine nützliche 'ID' übergibst, wenn du sie aufruft. – user113716

-1

Sie den falschen Ansatz hier einnehmen.

Wenn Sie JavaScript vertraut sind, sollten Sie zunächst versuchen, einige Tutorials zu lesen, und nicht nehmen Sie nur das erste Bit von komplexen Code, den Sie sehen und versuchen, es herauszufinden. Sie müssen zuerst die Grundlagen verstehen und wie alles zusammenpasst.

starten hier:

http://www.w3schools.com/js/default.asp

+0

Seien Sie vorsichtig. Einige Leute hier werden Sie ablehnen, weil Sie "w3schools" als Ausgangspunkt für JavaScript vorschlagen. – user113716

+0

@patrick Danke für die Köpfe hoch. Ich weiß, es ist nicht die beste Ressource, aber für jemanden, der scheinbar nichts über JavaScript weiß, ist es ein guter Ausgangspunkt. – xil3

0

die _ ist nur ein Teil der variablen Kennung, ist es technisch nicht alles in JS bedeuten, aber das könnte eine besondere Bedeutung in den Entwickler haben (zB alle Variablen mit _ könnte etwas Bestimmtes tun)

_createIframe: function (id) {} ​​ist Teil eines Objekts (einmalige Objekte werden wie dieses erstellt {} oder von der JS-Objektklasse erweitert). Sie verwenden die Prototyp-Eigenschaft, um ein Objekt um ein anderes Objekt zu erweitern.

try qq.UploadHandlerForm.getName (...)

0

Die _ ist nur ein Teil des Namens, aber mit _ am Anfang eines Namens ist eine gemeinsame Konvention für „dieses Zeug ist privat, werden Sie wahrscheinlich sollte sich nicht damit anlegen ". In Javascript ist das implizit öffentlich; Sie müssen tatsächlich durch einige Reifen springen (und etwas Speicher verschwenden), um wirklich private Variablen zu erhalten. Anstatt das zu tun, geben manche Leute dem privaten Zeug einen besonderen Namen und vertrauen darauf, dass andere Leute nicht damit herumspielen. (Private Variablen sind selbst eigentlich nur eine Konvention, in den meisten Sprachen; jeder, der sie wirklich sehen will. JS macht das viel schwieriger, aber in einer Weise, die ehrlich gesagt scheiße ist.)

0

Der Unterstrich ist nur ein Teil der Kennung. Wahrscheinlich in diesem Fall verwendet, um Mitgliedsvariablen/Routinen darzustellen.

_createForm: function(iframe, params){}

..ist ein Name-Wert-Paar. _createForm ist der Name und die Funktionsdefinition ist der Wert. Also heißt die Funktion _createForm.

Ich würde empfehlen, Doug Crockfords Serie auf Javascript zu beobachten.

The Javascript programming language

Advanced Javascript

Verwandte Themen