2009-09-01 96 views
0

我剛剛開始學習JS,並且當然有一些困難。我通常很快把握事情,但我不能爲我的生活找到解決辦法。我想瞭解爲什麼會發生這種情況。JS:通過document.write顯示HTML w /變量

我的目標是使用3個提示框來顯示一段html代碼,它將是一個簡單的URL。我會加入更多,但我想先過去。

目前,我正在收到提示,但在將數據輸入第三個框並提交後,沒有任何反應。

我在這裏做錯了什麼?如果這是我的document.write代碼的錯誤,我應該尋找哪些東西?

謝謝!..

function show_prompt() 
{ 
    var site_type = prompt("What kind of link is this?"); 
    var site_url = prompt("What is the URL?"); 
    var site_title = prompt("Give the link a title"); 
    if (site_type = website) { 
     document.write("<a style=\"color: #777777\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>"); 
    } 
    else 
     if (site_type = video) { 
      document.write("<a style=\"color:#98B2C3\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>"); 
     } 
     else 
      if (site_type = image) { 
       document.write("<a style=\"color:#8D5359\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>"); 
      } 
      else 
       (site_type = article); { 
       document.write("<a style=\"color:#768D53\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>"); 
       } 
} 

回答

2

好了,之前,我們甚至開始嘗試合作,通過怎樣if語句去工作,我們需要修復的事實,你是分配沒有比較在你的if()語句中。

而不是在你的if語句中有一個= sign,你需要有2個等號。就像這樣:

if (site_type == website) 

單個等號(=)用於分配變量,所以你的情況,你實際上指定網站的價值爲site_type的變量 - 不能用來比較兩個不同的值。

試試這個:

function show_prompt() 
{ 
     var site_type = prompt("What kind of link is this?"); 
     var site_url = prompt("What is the URL?"); 
     var site_title = prompt("Give the link a title"); 
     if (site_type == "website") { 
      document.write("<a style=\"color: #777777\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>"); 
     } 
     if (site_type == "video") { 
      document.write("<a style=\"color:#98B2C3\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>"); 
     } 
     if (site_type == "image") { 
      document.write("<a style=\"color:#8D5359\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>"); 
     } 
     if(site_type == "article") { 
      document.write("<a style=\"color:#768D53\" href=\"http:\/\/"+site_url+"\" title=\"site_title\">"+site_title+"<\/a>"); 
     } 
} 

我已經在上面塊做了一些更改您的代碼,而不是僅僅移除else語句。我還做了if()比較檢查字符串而不是像以前那樣針對空變量,並且我更改了document.write函數以在其中使用添加的提示字符串。 如果我們能得到那個工作,我們可以開始考慮,我們真的把else語句在稍後的日期:)

+0

感謝Steerpike(和安德烈斯) 確定。我現在已經完成了這個工作,不過,在提交第三個提示後,我仍然遇到同樣的最終結果。 – 2009-09-01 19:26:26

+0

真棒,它完美的作品..謝謝你Steerpike ..傷心地在這一整天。現在我終於可以放下頭來休息了。 非常感謝! (並感謝你們其他人爲了鳴叫) – 2009-09-01 19:55:40

0

替換「如果(site_type =網站){」爲「如果(site_type ==網站){「 和其他。

0

除了分配VS從Steerpike和安德烈斯比較的問題,你會因爲你是比較你的變量site_type到另一個變量遇到問題:websitevideoimagearticle。這些都是未初始化的變量,因此,有條件的將實際檢查,如果site_type == null

發生了什麼事在你原來的代碼如下:

// The value on the right side of the = is assigned to site_type. 
// All of these are uninitialized, so will evaluate to null 
// Since null is falsy, each conditional fails 
if (site_type = website){ 
... 
} else if (site_type = video){ 
... 
} else if (site_type = image){ 
... 
} else if (site_type = article){ 
... 
} 
0

除了使用的,而不是比較運算任務,你應該也引用你的字符串。

如:

if (site_type == 'video') { 
         document.write("<a style=\"color:#98B2C3\" href=\"http:\/\/site_url\" title=\"site_title\">site_title<\/a>"); 
       } 

除非這些實際上都意味着是變量,video,如果它是不確定的,因此,你的JavaScript停止將產生錯誤。

如果你不使用Firefox,下載並安裝Firebug的。 http://getfirebug.com/

它會讓你知道的JavaScript錯誤是什麼,並提供了很多其他工具。

+0

好的。甜。現在我終於得到了一個輸出!除此之外,我還沒有找到。 「site_title」和「site_url」的值保持不變。嗯... – 2009-09-01 19:50:05