2014-02-09 170 views
1

我想加載示例我的教師發佈在他的網頁上以確保我的筆記本可以使用WebGL。我事先打開他的例子,他們的工作,只是在廣場上顯示一個正方形。於是我去複製粘貼到記事本文本編輯器上的確切代碼,將它們保存爲.js文件,然後對.html文件執行相同的操作,並得到上述標題中所述的錯誤。當我打開特別是與錯誤「檢查元素」,該部分是:未捕獲類型錯誤:無法讀取屬性'parentNode'爲空

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

//未捕獲的類型錯誤:無法空的讀屬性「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

你可以在jsfiddle上顯示你的html嗎? –

回答

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; 
}; 
相關問題