0

好吧,首先,这里是新手,所以我的问题答案可能非常简单,因为我错过了一些重要的事情。

我正在尝试使用 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>
4

2 回答 2

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/$(document).ready()

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

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

jQuery 的 $(document).ready():
http ://api.jquery.com/ready/

小提琴(使用window.onload):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

于 2013-04-12T00:58:23.477 回答
1

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

document.getElementById("bbref").innerHTML = "Lister Is the Man!";
于 2013-04-12T00:59:34.043 回答