关于该代码的一些注释。不要以错误的方式理解这些,您是 JavaScript 新手!每个人都曾经,让人们指出事情是我们学习的一种方式。
几乎没有任何理由使用new Array
. 使用数组文字。在这种情况下:
var quotes = [
"text1",
"Text2",
"text3",
"text4"
];
该属性在 90 年代已language
弃用,默认值为type
on 。所以这就是你所需要的。script
text/javascript
<script src="..."></script>
你的随机数是错误的。Math.random
返回一个从0
(包括)到1
(排他)的数字,因此您只想乘以图像数量,而不是数字减一。
document.write
最好避免。在现代网络编程中使用它的理由非常非常少。
这是处理您所描述的事情的一种方法:Live Example | 直播源
(你必须经常刷新它,因为它只有两个条目,所以你很有可能看到相同的条目。)
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Random Text Plus Image</title>
</head>
<body>
<div id="quote"></div>
<script>
(function() {
var quotes = [
{
text: "text1",
img: "http://i.stack.imgur.com/FqBE6.jpg?s=32&g=1"
},
{
text: "text2",
img: "https://www.gravatar.com/avatar/ca3e484c121268e4c8302616b2395eb9?s=32&d=identicon&r=PG",
}
];
var quote = quotes[Math.floor(Math.random() * quotes.length)];
document.getElementById("quote").innerHTML =
'<p>' + quote.text + '</p>' +
'<img src="' + quote.img + '">';
})();
</script>
</body>
</html>
我在那里做了什么:
我输出一个元素 the<div id="quote"></div>
来保存引用和图像。这是代替document.write
.
我使用了数组文字,但我的数组文字包含对象文字(其中的{...}
东西text: "text1"
)。所以我的数组包含对象,其中每个对象都有属性text
(引用的文本)和img
(要使用的图像的 URL)。
我修复了随机的东西。
在输出文本(我假设是 HTML 标记)和图像时,我通过在代码上方的 I 输出上进行设置来做到这innerHTML
一点quote
div
。
我把我所有的代码放在一个我立即调用的封闭函数中。这可以防止创建任何全局变量。
希望这可以帮助。