连接2个Javascript代码

时间:2014-03-03 12:45:56

标签: javascript

我有2个javascript。我试图将它们组合但失败了。第一部分随机创建文本,第二部分替换标题文本。

问题是创建组合代码,以便用随机生成的文本替换标题。基本上连接这两个代码:

第一个Javascript:

document.addEventListener("DOMContentLoaded", init, false);

function init() {
    generate();

    var enterButton = document.getElementById("haikuButton");
    enterButton.addEventListener("click", generate);

}

var prevRandom;

function generate() {
    var threeS = [
    /* ------------------------------------------------------- */
        "Some text",
    /* ------------------------------------------------------- */
        "Some text 2", ];

    var rand;

    do {
        rand = Math.floor(Math.random() * threeS.length);
    } while (rand === prevRandom);

    prevRandom = rand;
    document.getElementById("words").innerHTML = threeS[rand];
    var input = document.getElementById('id_name').getElementsByTagName('input')[0];
    input.value = threeS[rand];
}

第二个代码:

..
<script type="text/javascript">
    function changeTitle(title) { document.title = title; }
</script>
..
<input type='button' onclick='changeTitle("new title")' value='Change Title'/> 

2 个答案:

答案 0 :(得分:1)

看起来你可能有困难,因为你的功能 generate实际上并不return任何东西;它设定然后结束。

这意味着要解决您的问题,您可以执行以下选项之一

  • 重构您的代码,以便generate返回而不进行设置,而另一个(新)函数设置包括文档标题在内的内容。
  • 将行changeTitle(threeS[rand])添加到generate的末尾,这需要在调用第一个脚本之前正确加载第二个脚本。
  • 创建一个功能,获取 #id_name中的值,说foo,然后调用changeTitle(foo)

我的意见中,最好重构代码,以便您拥有更通用的功能。

function generate() {
    var threeS = [/* etc */], rand;
    rand = Math.floor(Math.random() * (threeS.length - 1));
    if (rand >= prevRandom) // no loop, always a different value
        rand = (rand + 1) % threeS.length;
    prevRandom = rand;
    return threeS[rand];
}

function makeFieldsRandom() {
    var val = generate(),
        words = document.getElementById("words"),
        id_name = document.getElementById('id_name'),
        input = id_name.getElementsByTagName('input')[0];
    words.innerHTML = val;
    input.value = val;
    document.title = val;
}

然后调用makeFieldsRandom而不是其他任何

答案 1 :(得分:0)

设置rand变量后,只需调用第一个函数: http://jsbin.com/yugututa/2/edit