2015-02-24 45 views
0

我正在使用下面的函數創建一個BF4武器選擇器(告訴你隨機武器/附件裝備),並且有一個鏈接刷新它(再次運行該函數),但是當鏈接被點擊,它不起作用(並且在控制檯中沒有錯誤) 任何想法? JSFiddleJavascript:鏈接運行功能不起作用

只是爲了闡明:文本出現,並作爲鏈接,但是當您單擊鏈接(運行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> 
+0

你不是想用'href'屬性,嘗試',而不是onclick'屬性來調用一個函數。 – 2015-02-24 05:21:22

+0

嘗試創建新元素,然後更改每個元素上的innerHTML單擊。你可以檢查我的答案。嘗試這個小提琴http://jsfiddle.net/codeSpy/nzqxcoL0/ – 2015-02-24 05:56:37

回答

1

如果你想在普里姆ary和輔助武器在每次點擊中改變,你可以在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) 
+0

謝謝,我會嘗試一下,看看會發生什麼:P – user3521680 2015-02-24 05:26:29

+0

在JSFiddle上我得到了和上面一樣的東西(ReferenceError:Can not find variable: CreateWeapons) – user3521680 2015-02-24 05:28:56

+0

我不確定爲什麼JSFiddle運行錯誤。在JSBin工作正常。請參閱http://jsbin.com/wiqujehupe/1/edit?html,js,output – 2015-02-24 05:35:39

0

如果創建一個元素,然後使用它的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