2012-12-02 36 views
1

我想確保一個javascript變量在將它設置爲一個ruby變量時獲取正確的值。打印出一個javascript變量(沒有顯示出來?)

<script type="text/javascript" charset="utf-8"> 

    var test = <%= @test || 'null' %>; 
    document.write(test); 

</script> 

然而,似乎沒有任何輸出。我試過document.write("somethinganything"),但我仍然沒有看到任何輸出。它應該出現在網頁或終端上嗎?我在兩個都找不到。

+0

如果你用什麼做的代碼看起來像瀏覽器的查看頁面源代碼的選擇嗎? '@ test'變量可以包含一個創建無效JavaScript的值,然後在它到達'document.write()'之前停止。你的'document.write(「somethinganything」)'應該可以工作,正如你可以在這裏看到的:http://jsfiddle.net/Aa5nn/,除非你在具有錯誤的'var test = ...'行之後_it_ 。 – nnnnnn

+0

如果您查看源代碼,您會看到什麼?解析器可能由於某些語法錯誤而停止在'var test ...'行,並且從來沒有將其解析爲以下的'document.write'行 – lostsource

+0

使用console.log結束,能夠跟蹤變量值後使用螢火蟲。感謝大家! – Jonathan

回答

6

document.write打印到網頁上。您應該嘗試使用console.log打印到終端。

+1

這不回答OP的問題。他在文檔或終端中沒有看到任何輸出。 –

+1

問題本身的唯一問題是「它是否應該出現在網頁或終端上?我在兩個都找不到。」 – lifetimes

+0

所以再次這並不回答這個問題 - 爲什麼它不是應該出現在網頁中? – nnnnnn

1

你必須寫console.log("test");

3

你不應該使用document.write()打印出可見的內容,除非腳本塊是在<body>

一些較舊的瀏覽器不支持該功能,如果腳本塊位於<head>中,它將不會寫入任何可見內容。

嘗試以下解決方案,而不是一個:

// Append a text node to the end of your body 
window.onload = function() { 
    var txt = document.createTextNode(test); 
    document.body.appendChild(txt); 
}; 

// Log the text to your javascript console 
console.log(test); 

// Alert the text in a popup 
window.alert(test); 
+0

此處演示:http://jsfiddle.net/Z9cEK/ –

+0

'document.write()'從''中的腳本塊開始工作 - 您是否有一些支持性文檔說明您爲什麼認爲它不行? – nnnnnn

+0

@nnnnnn我站好了。更新我的答案以糾正我的陳述。 –