2015-08-19 2 views
0

Я знаю, что это очень распространенная ошибка, но я просто не могу понять, почему это не работает.appendChild не является функцией - что я делаю неправильно?

Я хочу динамически изменять значение пролета. Простой, не так ли? Я пробовал $ span.innerHTML = "text" и $ span.innerText = "text", которые ничего не делают, но не бросают никаких ошибок. Моя последняя попытка выглядит так:

var $resourceSpan = $("#divname"+dynamic_variable); 
var stringVar = functionThatReturnsString(); 
     while($resourceSpan.firstChild) { 
     $resourceSpan.removeChild($resourceSpan.firstChild); 
     } 
     var textNode = document.createTextNode(stringVar); 
     $resourceSpan.appendChild(textNode); 

Кто-нибудь знает, почему я выбрасываю эту ошибку? Спасибо

+0

Не является ли '$ resourceSpan.firstChild' функцией? Вам понадобится() после этого ... – jcoppens

ответ

2

Вы имеете дело с объектом jQuery, методы, подобные removeChild() и appendChild(), принадлежат элементу dom не к объекту jQuery.

Чтобы удалить все содержимое элемента можно использовать .empty() и установить текстовое содержимое элемента можно использовать .text(), но с использованием .text() заменит существующий контент таким образом, в вашем случае вы можете просто использовать

var $resourceSpan = $("#divname" + dynamic_variable); 
 
var stringVar = functionThatReturnsString(); 
 
$resourceSpan.text(stringVar);

0

вы хотите сделать что-нибудь подобное?

<html> 
<head> 
    <title>STACK OVERFLOW TESTS</title> 
    <style> 

    </style> 
</head> 
<body> 

    <span>HI, IM SOME TEXT</span> 

    <input type = 'button' value = 'Click me!' onClick = 'changeText()'></input> <!-- Change the text with a button for example... --> 

    <script> 
     var text = 'I AM THE NEW TEXT'; // The text to go in the span element 

     function changeText(){ 
      var span = document.querySelector('span'); 
      span.innerHTML = text; 
    } 
    </script> 
</body> 
</html>