2014-02-09 2 views
1

Я пытаюсь загрузить примеры, которые мой инструктор разместил на своей веб-странице, чтобы убедиться, что мой ноутбук может работать с WebGL. Я заранее открыл свои примеры, и они работали, просто отображая квадрат в квадрате. Поэтому я пошел, скопировал и вставлял точные коды, которые у него были в текстовый редактор блокнота, сохранил их как .js-файлы, затем сделал то же самое для файла .html и получил ошибку, как сказано в названии выше. Когда я открыл «Осмотрите элемент», часть, в частности, с ошибкой было:Uncaught Type Error: Невозможно прочитать свойство «parentNode» из null

var setupWebGL = function(canvas, opt_attribs) { 
    function showLink(str) { 
    var container = canvas.parentNode; 

// Uncaught Тип ошибки: Не удается ReadProperty «ParentNode» нулевых

if (container) { 
    container.innerHTML = makeFailHTML(str); 
    } 
    }; 

    if (!window.WebGLRenderingContext) { 
    showLink(GET_A_WEBGL_BROWSER); 
    return null; 
    } 

    var context = create3DContext(canvas, opt_attribs); 
    if (!context) { 
    showLink(OTHER_PROBLEM); 
    } 
    return context; 
}; 

Любые идеи о том, как исправить эта ошибка? Поскольку этот код работал на веб-сайте инструктора, должно быть что-то мне не хватает. Если вам нужна дополнительная информация/подробности по вопросу, пожалуйста, дайте мне знать. Благодаря

<!DOCTYPE html> 
<html> 
<head> 
<script id="vertex-shader" type="x-shader/x-vertex"> 

attribute vec4 vPosition; 
void main() 
{ 
    g1_Position = vPosition; 
} 
</script> 
<script id="fragment-shader" type= "x-shader/x-fragment"> 
precision mediump float; 
void main() 
{ 
    g1_FragColor = vec4(1.0,1.0,1.0,1.0); 
} 
</script> 
<script type="text/javascript" src="webgl-utils.js"></script> 
<script type="text/javascript" src="initShaders.js"></script> 
<script type="text/javascript" src="MV.js"></script> 
<script type="text/javascript" src="square.js"></script> 
</head> 
<body> 
<canvas id="g1-canvas" width="512" height="512"> 
Oops...your browser doesn't support the HTML5 canvas element 
</canvas> 
</body> 
</html> 
+0

Вы можете показать свой html на jsfiddle.? –

ответ

0

showLink функция получает создан в setupWebGL объеме, и проблема в том, когда showLink получает вызывается, canvas переменная теряет свое значение. его исправить можно:

var setupWebGL = function (canvas, opt_attribs) { 
    function showLink(str) { 
     var container = showLink._canvas.parentNode; 
     if (container) { 
      container.innerHTML = makeFailHTML(str); 
     } 
    } 
    showLink._canvas = canvas; 
}; 
Смежные вопросы