web-dev-qa-db-fra.com

AppendChild () n'est pas une fonction javascript

c'est mon javascript

<head runat="server">
    <script type="text/javascript" language="javascript">

        function createQuestionPanel() {

            var element = document.createElement("Input");
            element.setAttribute("type", "button");
            element.setAttribute("value", "button");
            element.setAttribute("name", "button");


            var div = '<div>top div</div>';
            div[0].appendChild(element);

        }

        function formvalidate() {

        }

    </script>
</head>
<body onload="createQuestionPanel()">
</body>
</html>

il génère une erreur "AppendChild n'est pas une fonction". J'ai essayé de chercher une solution .. il a été suggéré que sur le lieu de 

div.appendChild (element);

cela devrait être posté

div [0] .appendChild (element);

cela n'a pas changé l'erreur. Veuillez suggérer

11
Neeraj Verma

Votre variable div est une chaîne, pas un objet d'élément DOM:

var div = '<div>top div</div>';

Les chaînes n'ont pas de méthode appendChild. Au lieu de créer une chaîne HTML brute, créez la div en tant qu'élément DOM et ajoutez un nœud de texte, puis ajoutez l'élément d'entrée:

var div = document.createElement('div');
div.appendChild(document.createTextNode('top div'));

div.appendChild(element);
11
MrCode
 function createQuestionPanel() {

        var element = document.createElement("Input");
        element.setAttribute("type", "button");
        element.setAttribute("value", "button");
        element.setAttribute("name", "button");


        var div = document.createElement("div"); <------- Create DIv Node
        div.appendChild(element);<--------------------
        document.body.appendChild(div) <------------- Then append it to body

    }

    function formvalidate() {

    }
6
pnkz

Essayez ce qui suit:

var div = document.createElement("div");
div.innerHTML = "topdiv";
div.appendChild(element);
document.body.appendChild(div);
0
Amberlamps

Il suffit de changer 

var div = '<div>top div</div>'; // you just created a text string

à

var div = document.createElement("div"); // we want a DIV element instead
div.innerHTML = "top div";
0
Fusion

Dans ce 

var div = '<div>top div</div>';

"div" n'est pas un objet DOM, c'est juste une chaîne et string n'a pas de string .appendChild.

Voici quelques références pouvant vous aider sur la méthode appendChild:

<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>

<script>
var para = document.createElement("p");
var node = document.createTextNode("This is new.");
para.appendChild(node);

var element = document.getElementById("div1");
element.appendChild(para);
</script>
0
P1NK