2011-05-17 92 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