2011-05-17 50 views
1

的最終目的是要返回仙界顯示下面的句子腳本產生錯誤我找不到

從前,有一個名爲NAME
性別誰了一個名爲寵物的名字PET的頁面。

<SCRIPT language="JavaScript"> 

var heroGender, heroName, petType, petName; 

heroGender = window.prompt('Is the hero female or male? Enter F or M', 'F'); 

heroName = window.prompt('What is the hero\'s name?',''); 

petType = window.prompt('What type of pet does the hero have?',''); 

petName = window.prompt('What is name of the pet?',''); 

    document.write('Once upon a time there was a '); 

if (heroGender == ('F')) 
{ 
    document.write('girl'); 
} 
else 
{ 
    document.write('boy'); 
} 

document.write('Once upon a time there was a ' + heroGender + ' named ' + heroName '.''<BR>' + 
            heroName + ' had a ' + petType + ' called ' + petName + '.'); 

</SCRIPT> 
+0

你能解釋什麼地方出了錯運行?我們看到代碼,但除非我們複製並運行它,否則我們不知道哪裏出了問題。 – 2011-05-17 20:12:50

+2

一個明顯的問題是,你打印出「曾經有一次**」兩次**。 – Pointy 2011-05-17 20:14:41

+1

您的代碼是''。''
''這是一個不太正確的語法。 – pimvdb 2011-05-17 20:16:10

回答

2

我覺得你在最後document.write.You're有一些錯別字heroName後缺少一個「+」 ...和你有一些重複document.writes。

這就是我認爲應該是你的最終代碼:

var heroGender, heroName, petType, petName; 
heroGender = window.prompt('Is the hero female or male? Enter F or M', 'F'); 
heroName = window.prompt('What is the hero\'s name?',''); 
petType = window.prompt('What type of pet does the hero have?',''); 
petName = window.prompt('What is name of the pet?',''); 

if (heroGender == ('F')) { heroGender ='girl'; } else { heroGender = 'boy'; } 
document.write('Once upon a time there was a ' + heroGender + ' named ' + heroName + '. ' + heroName + ' had a ' + petType + ' called ' + petName + '.'); 
+0

謝謝 - 這正是我所尋找的。 – ZenProcrastination 2011-05-17 20:30:00

7

當你等待的書!

Mozilla Developer Centre學習!

一個例子:

Example

修正版本

document.write(
    'Once upon a time there was a ' + heroGender + 
    ' named ' + heroName + '.' + '<BR>' + heroName + 
    ' had a ' + petType + ' called ' + petName + '.'); 

破碎版本

你失蹤到+符號。

document.write(
    'Once upon a time there was a ' + heroGender + 
    ' named ' + heroName /* + */ '.' /* + */ '<BR>' + heroName + 
    ' had a ' + petType + ' called ' + petName + '.'); 

嘗試使用

  • Firefox和Firebug和其控制檯選項卡(命中F12)
  • IE9和控制檯版本(點擊F12。確保控制檯打開再刷新)。
  • Chrome並在控制檯構建(按Ctrl + Shift鍵+ J)

要觀看任何錯誤消息。

如果這是太多的精力,然後嘗試

window.onerror = function(e) { 
    alert(e.message); 
} 

下面是一個「改良」更符合標準的版本。 Example Link!

HTML:

<label> Your Hero's gender </label><input id="heroGender"/><br/> 
<label> Your Hero's name </label><input id="heroName"/><br/> 
<label> Your Hero's pet type </label><input id="petType"/><br/> 
<label> Your Hero's pet name </label><input id="petName"/><br/> 
<button> Make me a hero! </button> 
<div id="output"></div> 

的JavaScript:

// make your hero when you press the button 
document.getElementsByTagName("button")[0].addEventListener("click", function() { 
    // get all the values from the text boxes 
    var gender = document.getElementById("heroGender").value, 
     name = document.getElementById("heroName").value, 
     petType = document.getElementById("petType").value, 
     petName = document.getElementById("petName").value; 

    // set the text on your output. 
    document.getElementById("output").textContent = 
     "Once upon a time there was a " + gender + 
     " named " + name + ". " + name + " had a pet " + 
     petType + " called " + petName; 


}, false); 

上面的代碼將打破IE8或更低:(使JavaScript的工作跨瀏覽器是一個正確的疼痛。

所以我,你可以在

閱讀瀏覽器的文檔,但這些都不是容易閱讀和瀏覽。跨瀏覽器腳本的一個很好的視覺指南是visibone BrowserBook

它會顯示跨瀏覽器支持(紅色火狐,藍色是IE):

enter image description here

給它幾個月,你就會知道如何使用所有的舒適。

+1

謝謝。我很感激。雖然在上面的行中有錯誤。調試器以第9行 – ZenProcrastination 2011-05-17 20:20:29

+1

+1結束,它不僅提供工具和方法,而且還提供純粹的「家庭作業」問題答案。 – 2011-05-17 20:23:56

+0

謝謝你這個全面的答案。我一定會開始使用Firebug。我正在等待從亞馬遜來的我的JS書籍。 – ZenProcrastination 2011-05-17 20:29:08

1

太多的報價,而遺漏加

Error: missing) after argument list 
Source File: http://fiddle.jshell.net/_display/ 
Line: 41, Column: 83 
Source Code: 
document.write('Once upon a time there was a ' + heroGender + ' named ' + heroName '.''<BR>' + 

應該

document.write(' named ' + heroName + '.<BR>' + 
heroName + ' had a ' + petType + ' called ' + petName + '.'); 

http://jsfiddle.net/mplungjan/zHGsD/

1

有在這一行中有語法錯誤:

document.write('Once upon a time there was a ' + heroGender + ' named ' + heroName '.''<BR>' + heroName + ' had a ' + petType + ' called ' + petName + '.'); 

特異性ically,在這裏:

heroName '.''<BR>' + heroName 

如果改成這樣,你應該按預期工作:

document.write(' named ' + heroName + ' who had a ' + petType + ' called ' + petName + '.'); 

請注意,我還移除了這句話的第一部分冗餘,因爲你已經列入它在你之前「如果'F',然後'女孩'」聲明。

+0

謝謝你的冗餘評論。我對此感到困惑,但問題的結構使得它看起來像是前後都需要的句子。非常感激。 – ZenProcrastination 2011-05-17 20:31:42

0

問題出在您的最後一行上。更正如下

document.write('Once upon a time there was a ' + heroGender + ' named ' + heroName + '.' + '<BR>' + heroName + ' had a ' + petType + ' called ' + petName + '.'); 
1
document.write('Once upon a time there was a ' + heroGender + ' named ' + heroName **+** '.' **+** '<BR>' + 
            heroName + ' had a ' + petType + ' called ' + petName + '.'); 

我把它加入兩個+,我已經包裹在**

+0

太棒了。 Thankyou :-)羞愧得到分數爲時已晚,但經驗是我們給我們錯誤的名字。 – ZenProcrastination 2011-05-17 20:32:22

+0

@禪宗:很高興回答。我更多地致力於解決問題並增強個人知識。然後我分享幫助他人的答案。 :) – Nija 2011-05-17 20:58:35