appendChild不是一个函数 - 我做错了什么?

时间:2015-08-19 01:12:21

标签: javascript jquery html dom

我知道这是一个非常常见的错误,但我无法弄清楚为什么这不起作用。

我想动态更改范围的值。简单吧?我尝试过$ 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 );

有谁知道为什么我会抛出这个错误?感谢

2 个答案:

答案 0 :(得分:2)

您正在处理jQuery对象,像removeChild()和appendChild()这样的方法属于dom元素而不属于jQuery对象。

要删除元素的所有内容,可以使用.empty()并设置可以使用.text()的元素的文本内容,但使用.text()将替换现有内容,因此在您的情况下你可以使用

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

答案 1 :(得分: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>