2013-08-23 3 views
-1

Я получаю сообщение об ошибке при создании фрагмента документа, добавлении к нему элементов и возврате этого фрагмента. Я использовал фрагменты документа в прошлом (злоупотреблял ими за пределами этого примера) и никогда не сталкивался с этой ошибкой. В консоли разработчика он перечисляет это как источник ошибки:Ошибка при добавлении к documentFragment

fragment.appendChild($balanceNumber, $balanceSign); 

Ошибка

Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist.

Функция

var constructBalanceFragment = function(balance) { 
    var $balanceNumber, $balanceSign, fragment, sign; 
    fragment = document.createDocumentFragment(); 
    $balanceNumber = $('<span class="balance_number"></span>'); 
    $balanceSign = $('<span class="balance_sign"></span>'); 
    if (balance > 0) { 
     sign = "+"; 
     $balanceSign.addClass("positive_number"); 
    } else if (balance < 0) { 
     sign = "-"; 
     $balanceSign.addClass("negative_number"); 
    } else { 
     sign = ""; 
    } 
    $balanceNumber.text(balance); 
    $balanceSign.text(sign); 
    fragment.appendChild($balanceNumber, $balanceSign); 
    return fragment; 

Редактировать

Я попытался это и до сих пор получил ту же ошибку, прежде чем кто-нибудь спросит

fragment.appendChild($balanceNumber); 
fragment.appendChild($balanceSign); 
+2

'$ balanceNumber' является объектом JQuery, а не узел. И '.appendChild()' принимает только один аргумент. –

+0

Я добавил объекты jquery к фрагменту документа и никогда не имел проблемы. – Kylee

+0

Просматривая старый код, похоже, в прошлом я делал '$ object.appendTo (фрагмент)'. Это действительно имеет значение? Я буду тестировать и обновлять – Kylee

ответ

2

Это ближе к оригиналу и, кажется, работает, держа его в духе JQuery:

$(fragment).append($balanceNumber, $balanceSign); 

http://jsfiddle.net/TfDXD/1/

+0

Мне нравится это даже лучше, чем мой ответ. Более короткие. – Kylee

+0

Я подправил скрипку, чтобы она действительно работала с числами. Duh. –

1

Работа вокруг

Я установил это с помощью $object.appendTo(fragment) против fragment.appendChild($object) для тех, кто работает, чтобы это в будущем.

Смежные вопросы