Scope problem in JS: Uncaught TypeError: Object #<Objekt> hat keine Methode "createDocumentFragment'
Ich versuche, mich instrument zur Vereinfachung der Arbeit mit komplexen Netzen der jqGrid, eine Funktion, die Lesen konnten, Systeme der grids, aber sieht wie ich aus Mangel JS-Fähigkeiten für die )
function renderGridSystemRecursively(scheme, container){
//CHILDREN
if ('children' in scheme && scheme.children.length > 0) {
scheme.prm.gridPrm.subGrid = true
scheme.prm.gridPrm.subGridRowExpanded = function (expandedRowContainer_id, parent_dataitem_id) {
var hiddenAtStart = (scheme.children.length > 1) ? true : false
for (var i in scheme.children) {
var child = scheme.children[i]
if ('scheme' in child) {
//NEXT LINE CAUSES ERROR
//Uncaught TypeError: Object #<an Object> has no method 'createDocumentFragment'
var subcontainer = $('<div style="float: left;"/>',{id:expandedRowContainer_id+'_'+child.subId})
container.append(subcontainer)
child.scheme.hiddengrid = (child.scheme.hiddengrid == undefined) ? hiddenAtStart : child.scheme.hiddengrid
var self = $('#'+subcontainer.attr('id')+'_grid')
child.scheme.prm = child.scheme.prmInit(parent_dataitem_id, self)
child.scheme.prm.navMode = 'subgrid'
renderGridSystemRecursively(child.scheme, subcontainer)
}
}
}
}
//...
renderGrid(scheme.prm, container, scheme.prm.navMode)
}
Funktionsdefinition befindet sich im separaten Datei, und steht im globalen scope.
Funktion, die aufgerufen wird, die außerhalb des ready(), aber Fehler accures innerhalb von subGridRowExpanded event-handler, so wie es aussieht, die ich vergeigt habe mit Verschlüssen, kann nicht herausfinden, wie genau.
Ich nicht verwenden, jede andere Bibliothek außer jquery.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, was Sie gerne tun, ist dies:
createDocumentFragment() eine Methode von document.
...erstellt eine neue DocumentFragment. Wenn Sie den 2. parameter, wird dieser parameter als Kontext(sollte ein Dokument, was es nicht wirklich). , Die den Fehler verursacht.
Ihre syntax ist ein wenig off, können Sie keine Elemente mit inline-Eigenschaften und Eigenschaften (oder Ereignissen) - Objekt übergeben, wenn mit
$(html, props)
. Also diese:Muss so etwas sein: