2013-04-12 147 views
0

好吧,首先,这里总是新手,所以我的问题答案可能会很简单,因为我错过了一些关键的东西。在switch语句中使用getElementByID.innerHTML?

我想要一个switch语句,切换出id为“bbref”的h1标签的innerHTML。我将userName变量设置为“Lister”,并创建我的switch语句,以便将不同的行写入h1标记库中,并为userName输入什么名称。

由于某种原因,但我的代码只是不工作......任何想法..或明显的脑屁在我的最后?

这里是代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Javascript Learning</title> 
<script type="text/javascript"> 
var userName = "Lister"; 
switch (userName) { 
    case "Lister" : 
    document.write.getElementById("bbref").innerHTML = "Lister Is the Man!"; 
    break; 
    case "Rimmer": 
    document.write.getElementById("bbref").innerHTML = "Rimmer is a Smeg head..."; 
    break; 
    default : 
    doacument.write.getElementById("bbref").innerHTML = "It's all about \"The Cat\"" 
} 

</script> 
</head> 
<body> 
<header></header> 
    <section> 
     <article> 
      <h1 id="bbref">Test Title</h1> 
     </article> 
    </section> 
<footer></footer> 
</body> 
</html> 

回答

1

你搞乱了有一点你的功能,改变:

document.write.getElementById("bbref").innerHTML = "Lister Is the Man!"; 

到:

document.getElementById("bbref").innerHTML = "Lister Is the Man!"; 

等等的休息。

document.getElementById("bbref")将获取元素和.innerHTML将HTML中的元素,改变它会直接改变可见的HTML。所以没有必要write什么。

小提琴:
http://jsfiddle.net/H4hzE/


的window.onload/$(文件)。就绪()

,你会在这里遇到的另一个问题是,你的JavaScript代码在HTML呈现之前执行。将代码绑定到window.onload$(document).ready()(如果使用jQuery)在页面加载后运行代码。

的window.onload例子:
https://developer.mozilla.org/en-US/docs/DOM/window.onload

jQuery的$(文件)。就绪():
http://api.jquery.com/ready/

小提琴(window.load事件):
http://jsfiddle.net/H4hzE/1/


既然你说你是JavaScript新手,可能值得分享一些关于document.write()的信息,因为我认为你可能误解了它的一些功能。 :)

http://www.w3schools.com/jsref/met_doc_write.asp
http://javascript.info/tutorial/document-write
https://developer.mozilla.org/en-US/docs/DOM/document.write

+0

谢谢大家。我现在有我的代码显示: 'var userName =“Lister”; switch(userName){ \t case“Lister”: \t document.getElementById(“bbref”)。innerHTML =“Lister Is the Man!”; \t break; \t case“Rimmer”: \t document.getElementById(“bbref”)。innerHTML =“Rimmer是一个Smeg头......”; \t break; \t默认: \t的document.getElementById( “bbref”)的innerHTML = “这是所有关于\” 猫\ “” }' 但仍然一无所获。我认为.write是毫无意义的,这是我尝试的许多迭代之一。但无济于事。思考? –

+0

@CaderialJeffS我刚刚更新了我的答案,详细介绍了有关'window.onload'和jQuery的'$(document).ready()'。问题在于,您的JavaScript在呈现HTML之前正在运行。 – Jace

+1

BAM!那就是诀窍,非常感谢,现在我可以从我的额头上敲出凹痕,将它撞在墙上。 –

1

document.write()的和的document.getElementById()是两个不同的方法。在这种情况下,您只想使用getElementById,因此在所有3种情况下都省略.write。:

document.getElementById("bbref").innerHTML = "Lister Is the Man!"; 
+0

谢谢,我删除了多余的.write方法,但仍然没有发生......?帮助表示赞赏。 –