我已經創建了一個函數,以便每當通過按鈕調用該函數時都會加載該函數。但它只在刷新頁面時有效,但在按下Swap按鈕時不起作用。他們是否有任何方式來調用內部函數
這裏是鏈接http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html
誰能幫我解決這個問題。
感謝
我已經創建了一個函數,以便每當通過按鈕調用該函數時都會加載該函數。但它只在刷新頁面時有效,但在按下Swap按鈕時不起作用。他們是否有任何方式來調用內部函數
這裏是鏈接http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html
誰能幫我解決這個問題。
感謝
你的onclick =上的交換按鈕「洗牌()」和功能沒有在全球範圍內該事件將在被解僱定義。將函數移動到窗口範圍,或者創建DOM節點並附加一個真實事件給它,而不是使用document.writeln
此外,shuffle函數使用document.writeln,一個例子是修改它並且做這樣的事情,而不是:
function shuffle(){
//organize and sort your letters here
var letters = ....
//query for all elements with class = 'letters' use a library if you want full browser support.
var letter_nodes = document.querySelectorAll("div.letters");
for (var i = 0, n = letter_nodes.length; i<n; ++i) {
letter_nodes[i].innerHTML = letters[i]; // letters and letter_nodes array should have the same length.
}
}
編輯:
改變您的隨機播放功能,看起來像這樣:
var letters=['A','B','E','F','O','M','I','T']; //to access letters.length in the other function
function shuffle(){
letters.sort(function(){return 0.5 - Math.random();});
var letter_nodes = document.getElementById('lettersContainer');
letter_nodes = letter_nodes.getElementsByTagName('div');
for (var i = 0, n = letter_nodes.length; i<n; ++i) {
letter_nodes[i].innerHTML = letters[i];
}
return false;
}
然後更改PA在您創建容器(在print_2d_string_array)
document.writeln ("<a href='#' onclick='return shuffle()' class='swap'>Swap</a>");
document.writeln ("<div id='lettersContainer'>");
for (var i = 0; i < letters.length; ++i) {
document.writeln ("<div class='letters'></div>");
}
shuffle();
document.writeln ("</div>"); /* lettersContainer end */
感謝@xorath會嘗試 – Krishnendu 2012-04-11 10:30:29
如果我繼續在全球範圍內的功能,當我打的掉期按鈕,它實際刷新整個頁面,但我只想刷新新訂單的字母。這怎麼可能。 http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html 謝謝 – Krishnendu 2012-04-12 05:25:16
你應該仍然不能在洗牌中使用document.write。嘗試將其改爲在DOM節點上工作。您也可以添加onclick =「return shuffle()」,然後從shuffle方法返回false以避免在url中添加「#」。 – xorath 2012-04-12 13:33:52
對不起RT,你的問題我也不清楚:( – 2012-04-11 09:47:52