Javascript: Link 运行函数不工作

Javascript: Link runs function not working

我正在创建一个 BF4 武器选择器(告诉你随机 weapons/attachments 装备),使用下面的函数,然后 link 刷新它(再次 运行 函数),但是当 link 被点击时,它不起作用(并且控制台中没有错误) 有任何想法吗? JSFiddle

澄清一下:文本显示为 link,但是当您单击 link(运行s javascript:CreateWeapons() 时,它确实不起作用,JSFiddle 或 javascript 控制台中没有错误)

JS:

function Random(arr) {
            return arr[Math.floor(Math.random() * arr.length)];
        }

       function CreateWeapons() {
            document.getElementById('text').innerHTML = ('<a href="javascript:CreateWeapons();">' +
                'Primary: ' + Primary +
                '<br>' +
                'Secondary: ' + Secondary +
                '</a>');
            }

        var Primary = Random(["M16A4", "M16A3", "M416", "None"]);
        var Secondary = Random(["None",".44 Deagle"])
        CreateWeapons();

    // BF4 weapon chooser (using random values)

HTML:

<div id="weapons">
    <div id="text"></div>
</div>

如果您希望主副武器在每次点击时发生变化,您可以在 CreateWeapons 方法中调用 Random 方法。

另外用href调用js函数也不好,可以用onclick代替。

这是为您更新后的工作代码。

function Random(arr) {
        return arr[Math.floor(Math.random() * arr.length)];
    }

   function CreateWeapons() {
     var Primary = Random(["M16A4", "M16A3", "M416", "None"]);
     var Secondary = Random(["None",".44 Deagle"]);
        document.getElementById('text').innerHTML = ('<a href="#" onclick="CreateWeapons();return false;">' +
            'Primary: ' + Primary +
            '<br>' +
            'Secondary: ' + Secondary +
            '</a>');
        }


    CreateWeapons();

// BF4 weapon chooser (using random values)

最好创建一个元素,然后使用它的 onclick 事件来调用函数,而不是使用内联 onclick 事件。试试这个,

function Random(arr) {
    return arr[Math.floor(Math.random() * arr.length)];
}

var aElement = document.createElement("a");
aElement.href="#";

function CreateWeapons() {  
    var Primary = Random(["M16A4", "M16A3", "M416", "None"]);
    var Secondary = Random(["None",".44 Deagle"]);
    aElement.innerHTML = ('Primary: ' + Primary + '<br />' + 'Secondary: ' + Secondary);
    document.getElementById('text').appendChild(aElement);
    return false;
}


aElement.onclick = CreateWeapons;
CreateWeapons();

jsFiddle