2011-06-15 57 views
0

JS原型鬼混我

<link rel="stylesheet" type="text/css" media="screen" href="style.css"/> 
    <script type="text/javascript" src="prototype.js"></script> 
    <script type="text/javascript"> 
     $('lol').update('Hi!'); 
    </script> 

    <title>Memory Game</title> 
</head> 
<body> 
    <h1 id="lol">Hello</h1> 

</body> 


夠簡單。 沒有任何反應,這是FF給我在控制檯上的東西:

$(「lol」)爲空 [Break On Errors] $('lol').update('Hi!'); index.html(第10行)

我錯過了什麼?

回答

2

腳本在腳本元素解析時立即運行。由於腳本元素出現在lol之前,因此無法找到它。

將腳本移動到文檔的末尾,或者延遲執行某個人(例如,通過將其包裝到函數中並將其附加到onload事件中)。

1

我想你應該添加一個#,如果你是ID訪問:

$('#lol').update('Hi!'); 

編輯:對不起,我以爲你使用jQuery。您需要將

<script type="text/javascript"> 
    $('lol').update('Hi!'); 
</script> 

在頁面的底部。

+1

與原型庫, 「$()」 是 「的document.getElementById()」 的快捷方式。 – Pointy 2011-06-15 13:34:08

+0

不適用於原型。如果你做了$$('#lol'),你會添加一個#update('Hi!'); – Tomgrohl 2011-06-15 13:36:49

+0

+1 @Pointy。我的想法確切。 – Tomgrohl 2011-06-15 13:37:37

0
window.load = function() { $('lol').update('Hi!'); }) 
+0

這是Prototype.js,而不是jQuery。 – Pointy 2011-06-15 13:34:45

+0

剛剛實現。道歉。 – Candide 2011-06-15 13:35:16

+0

這當然令人困惑:-) – Pointy 2011-06-15 13:35:47

0

嘗試跨瀏覽器的DOM加載方法兼容,此火災時,文件被加載,但被繪製頁面之前:

<script> 
document.observe("dom:loaded", function() { 
    $('lol').update('Hi!'); 
}); 
</script> 

你也可以把簡單的腳本標籤,而不是文本/ whateverscript。