如何在html的其他部分的var textarray中输入文本?

问题描述 投票:1回答:5

我想随机显示一些文字,所以我偶然发现了这段代码:

<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>

这怎么可能?

感谢任何帮助......

javascript html random
5个回答
0
投票

干得好。

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;

Fiddle example


0
投票

你可以用

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/


0
投票

使用以下代码(在textarrayRndText()函数中进行微小更改):

<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


0
投票

我玩了你的问题,但我不知道结果是否符合你的要求。看看这个演示,让我知道。

  • qazxsw poi:基于实际HTML列表的文件qazxsw poi然后调用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;

-1
投票

如果您愿意使用jQuery,那么以下内容将起作用:

*{font-family:Consolas}
.panel{border:1px solid #ccc;padding:10px;margin-bottom:10px}
© www.soinside.com 2019 - 2024. All rights reserved.