контейнер hasChildNodes (), показывающий нулевое значение. Почему

0
<div  id="history">
      <div id="histheading" class="pull-left">History</div>
      <div id='hist'><canvas id="test"></canvas></div>
</div>


 var left=100;
 var t=-150;
 function doHistory_double()
    {
        var data = localStorage.getItem('HTML5TTT');
        data = JSON.parse(data);
            data.reverse();
        var container = document.getElementById('hist');
        // Clear the container
        while (container.hasChildNodes())
        {

            container.removeChild(container.firstChild);
        }
        // Loop through the data
        canvID = 0;
        for(x in data)
        {
            var i=1;
            var hist = data[x];
            if(hist.datetime == undefined)
                break;
            var elem = document.createElement('div');

            elem.style.marginLeft=lef + "px";
            if(i==1){
            elem.style.marginTop=t + "px";
            }
            else
            elem.style.marginTop="0px";
            i++;
            elem.innerHTML = "<p><strong>"+hist.datetime+"</strong><br>Winner: "+hist.winner+"<br><canvas  id='can"+canvID+"' width='100px' height='100px' ></canvas>";
            container.appendChild(elem);
            drawMiniBoard_double(document.getElementById("can"+canvID),hist.board);
            canvID++;
            lef+=310;

        }


    }

Это мой код javscript. hist - это div, показывающий историю игры. Я получаю ошибку, поскольку не могу вызвать метод hasChildNodes null. Я получаю эту ошибку после того, как я сделал что-то, используя переменную left и t, т.е. margin-top и margin-left. Помогите мне решить эту проблему.

  • 0
    Это означает, что container null , то есть элемент с идентификатором hist не существует в момент вызова функции. Поскольку то, что вы опубликовали, не является полным примером, трудно дать конкретное решение. Посмотрите, почему jQuery или метод DOM, такой как getElementById не находят элемент? для общих предложений.
Теги:
dom

2 ответа

0

его отлично работает.. проверьте скрипку

Я связываю метод клика, а затем вызываю предоставленный вами код и предупреждаю, чтобы показать, что мы получили ребенка внутри контейнера или нет.

--HTML--

<div  id="history">
      <div id="histheading" class="pull-left">History</div>
      <div id='hist' onclick=f()><canvas id="test"></canvas></div>
</div>

- JS -

function f()
{    
        var container = document.getElementById('hist');
    // Clear the container
        alert(container.hasChildNodes());
    while (container.hasChildNodes())
    {
        container.removeChild(container.firstChild);
    }
}

http://jsfiddle.net/FLC3R/

  • 0
    На самом деле у контейнера есть child, он возвращает true для haschildnodes (). Но я получаю сообщение об ошибке «Не удается вызвать метод hasChildNodes». Как убрать ошибку. ? Спасибо
  • 0
    увидим, что вы приняли возвращаемое значение true, то есть вызвали метод, тогда только он вернет TRUE / FALSE. Тогда в чем проблема, в какой строке вы получаете ошибку.
Показать ещё 2 комментария
0

записать его в функцию и называть его загрузкой документа.

function deleteChildren() {
    var container = document.getElementById('hist');
    // Clear the container
    while (container.hasChildNodes())
    {
        container.removeChild(container.firstChild);
    }
}


<body onload="deleteChildren()">
  <div  id="history">
      <div id="histheading" class="pull-left">History</div>
      <div id='hist'><canvas id="test"></canvas></div>
  </div>
</body>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню