使用javascript"随机引用“;脚本,但跨越两个独立的元素
Using a javascript "random quote" script but across two separate elements
我正试图通过编写一个基本网站(使用Twitter Bootstrap)来教自己一些javascript,该网站随机引用了古腾堡计划的一部小说,并对其进行了一些讨论,然后在页面下方有一个链接,可以直接访问古腾堡项目的小说。
我使用了这个JavaScript源代码脚本,效果非常好。。。引用本身。但是,当链接第二个元素时——引用书籍的链接——按钮中的文本不会出现。
HTML看起来像这样:
<div class="childquote">
<p>
<span id="ran1">“Quote from a first novel.”<br>
- Bram Stoker, <em>Dracula</em></span>
<span id="ran2">“Quote from a second novel.”<br>
- Herman Melville, <em>Moby Dick</em></span>
然后在页面下方,按钮HTML看起来像这样:
<div class="btn pull-right bookbutton">
<span id="ran1"><a href="http://www.gutenberg.org/ebooks/345">Read the book</a></span>
<span id="ran2"><a href="http://www.gutenberg.org/ebooks/2701">Read the book</a></span>
显然,所有适当的div都关闭了,等等
页面的CSS将页面上所有随机选项的显示设置为"无":
#ran1,#ran2,#ran3,#ran4,#ran5,#ran6,#ran7,#ran8,#ran9,#ran10,#ran11,#ran12,#ran13,#ran14,#ran15,#ran16,#ran17,#ran18 {
display:none;
}
JavaScript本身看起来是这样的:
function messageLoad() {
var wch=Math.floor(Math.random()*18+1);
document.getElementById('ran'+wch).style.display='inline';
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(function() {
messageLoad();
});
据我所知,因为我根本不懂JavaScript,JavaScript以某种方式"停用"了随机选择的"ranXX"的"display:none"CSS,因此第一部分——引号——将显示为没有为该随机数设置"display:none"。
但为什么同样的逻辑不适用于链接呢?我得到的随机引用很好,但按钮文本根本没有出现。
getElementById
,因此它最多只返回一个元素。事实上,ID在页面上应该是唯一的——这就是ID的概念。
您可以给链接ID加一个词缀(比如ran1link
),使它们是唯一可识别的,并使两个元素都将其display
设置为inline
。
请注意,您的window.onload
技巧并不是真正必要的。addEventListener
可以为一个事件附加多个功能。这样就不会与添加onload
函数的其他代码发生冲突。
相关文章:
- DataTables合并了两个独立表中的jQuery/Javascript函数
- 删除两个独立对象中的属性,而不使用多余的删除语句
- 两个独立工作的javascript函数,但不能一起工作
- 如何从两个独立的HTML ID中复制值
- 在JSON中创建一个数据对(不是字典,而是两个独立的数据)
- 你能写一些javascript,根据URL参数加载两个独立的index.html页面吗
- 在同一命名空间中保留两个独立的javascript文件/代码段
- 使用javascript"随机引用“;脚本,但跨越两个独立的元素
- 如何在 AngularJS 中的两个独立模块之间共享数据
- 两个独立的 React 副本
- 组合来自两个独立函数的结果
- 基于属性匹配两个独立的Javascript对象
- 带有jQuery点击功能的两个独立事件
- jQuery在两个独立的事件上激发函数
- 将JSON数据拆分为两个独立的数组
- 如何防止php中两个独立的ajax调用修改同一个数据库
- 同时运行两个独立的jQuery
- indexedDb-使用两个独立的密钥(本地和服务器ID/联机和脱机)进行保存/更新
- 在两个独立的成功http请求后激发回调
- 使用parse.com,我如何连接一个查询以返回两个独立查询的结果.equalTo