• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Attribute als String übergeben

Status
Für weitere Antworten geschlossen.

Gilles

Blogger
Halloo,
Ich probiere zur Zeit ein Element zu erstellen. Dafür habe ich mir eine Funktion geschrieben welcher ich ein Assoziatives Array mitgeben kann. (oder einen JSON String). Dabei sieht das Array dann zum Beispiel so aus

Code:
var attrArray = {
  "id" : "myId", 
  "className" : "myClassName"
};

Nun will ich mit einer foreach Schleife diese Attribute des Elements setzen.
Das Problem ist nun, dass die Attributnamen ja den Typ String haben.
Hatte mir schon gedacht, mit eval zu arbeiten, komme aber leider nicht dahinter.
Hier mal die Funktion:

PHP:
/**
   * Erstellt ein Element mit allen gewünschten Attributen
   * 
   * @param String
   *          element Benötigt den Element-Tag-Name als String (z.B. "li")
   * @param jsonAttributeList
   *          Attribute-Liste in JSON-Form (z.B. {"id" : "myId", "className" :
   *          "myClassName"})
   * @return object
   */
  var createEle = function(element, jsonAttributeList) {
    listAttr = jsonAttributeList;
    var ele = document.createElement(element);
    
    // Typ-Prüfung
    var typ = typeof listAttr;
    if(typ.toLowerCase() == "object") {
    // Attribute setzen für das Element setzen (z.B. ClassName oder Id)
      for ( var attr in listAttr) {
        ele.attr = listAttr[attr];
      }
    }
    return ele;

  };

Hoffe ihr wisst da Rat, wie ich das umsetzen kann :)
 
Warum so umständlich?

Code:
var createEle = function(element, jsonAttributeList) {
    var ele = document.createElement(element);
	if(!ele) throw('Kann Element nicht erzeugen: ' + element);
    
    // Attribute setzen für das Element setzen (z.B. ClassName oder Id)
	for ( var attr in jsonAttributeList)  ele[attr] = jsonAttributeList[attr];
    return ele;
};
Die typeof Prüfung ist überflüssig, die globale Variabel auch.
 
Ich mit throw lieber ein Objekt werfen:
Code:
function UserException(message) {
    this.message = message;
    this.name = "UserException";
}
UserException.prototype = Exception.prototype;

throw new UserException("can create element");
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben