我想随机显示一些文字,所以我偶然发现了这段代码:
<html>
<head>
<script type="text/javascript">
var textarray = [
"hi",
"hello there",
"how r u",
"where r u"
];
function RndText() {
var rannum= Math.floor(Math.random()*textarray.length);
document.getElementById('ShowText').innerHTML=textarray[rannum];
}
onload = function() { RndText(); }
</script>
</head>
<body>
<div id="ShowText"></div>
</body>
</html>
但是,我需要做的是在我的文本阵列中有动态输入,让我们从无序列表的内容中说:
<div id"textPool">
<ul>
<li>Hi</li>
<li>hello</li>
</ul>
</div>
这怎么可能?
感谢任何帮助......
干得好。
function randomText() {
var textPool = document.getElementById("textPool");
var listItems = textPool.getElementsByTagName("li");
var texts = [];
for(var i = 0; i < listItems.length; i++ ) {
texts.push(listItems[i].innerText);
}
var random = Math.floor(Math.random()*listItems.length);
document.getElementById('ShowText').innerHTML = texts[random];
}
window.onload = randomText;
你可以用
var textArray = document.getElementById('somelistid').getElementsByTagName('li')
这会给你一个数组。然后你可以用数组设置这样的文本。
document.getElementById('ShowText').innerHTML=textarray[rannum].innerHTML;
但是你应该真正开始使用jQuery。
var textArray = ('#somelistid').find('li');
当你以后设置它时,你将使用.text()方法而不是innerHTML。这应该运行得更快。
我实际上认为你应该开始研究像angularJS这样的东西。
这是一些简单的例子http://www.tomharris.net/test/angularJS
这里有很棒的训练http://angularjs.org/
使用以下代码(在textarray
和RndText()
函数中进行微小更改):
<html>
<head>
<script type="text/javascript">
var textarray = [];
function RndText() {
for(var i=0; i<document.getElementById('textPool').getElementsByTagName('li').length; i++)
textarray.push(document.getElementById('textPool').getElementsByTagName('li')[i].innerHTML);
var rannum= Math.floor(Math.random()*textarray.length);
document.getElementById('ShowText').innerHTML=textarray[rannum];
}
onload = function() { RndText(); }
</script>
</head>
<body>
<div id="ShowText"></div>
<ul id="textPool">
<li>hi
<li>hello there
<li>how r u
<li>where r u
</ul>
</body>
</html>
这是fiddle
我玩了你的问题,但我不知道结果是否符合你的要求。看看这个演示,让我知道。
init
。textarray
:向shuffle
添加一个新项目然后调用addInput
。textarray
:输出showList
的内容。showList
:如果项目随机输出一个。textarray
shuffle
var textarray = [],
input, list, result;
function init() {
var items;
input = document.getElementsByTagName('input')[0];
list = document.getElementById('list');
result = document.getElementById('result');
items = list.getElementsByTagName('li');
items = Array.prototype.slice.call(items, 0, items.length);
while (items.length) {
textarray.push(items.shift().innerHTML);
}
shuffle();
}
function addInput() {
if (input.value) {
textarray.push(input.value);
input.value = '';
showList();
}
}
function showList() {
list.innerHTML = 'textarray :';
list.innerHTML += '<ul><li>' + textarray.join('</li><li>') + '</li></ul>';
}
function shuffle() {
var rannum = Math.floor(Math.random() * textarray.length);
result.innerHTML = textarray[rannum];
}
onload = init;
如果您愿意使用jQuery,那么以下内容将起作用:
*{font-family:Consolas}
.panel{border:1px solid #ccc;padding:10px;margin-bottom:10px}