他们是否有任何方式来调用内部函数

他们是否有任何方式来调用内部函数

问题描述:

我已经创建了一个函数,以便每当通过按钮调用该函数时都会加载该函数。但它只在刷新页面时有效,但在按下Swap按钮时不起作用。他们是否有任何方式来调用内部函数

这里是链接http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html

谁能帮我解决这个问题。

感谢

+0

对不起RT,你的问题我也不清楚:( – 2012-04-11 09:47:52

你的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 */ 
+0

感谢@xorath会尝试 – Krishnendu 2012-04-11 10:30:29

+0

如果我继续在全球范围内的功能,当我打的掉期按钮,它实际刷新整个页面,但我只想刷新新订单的字母。这怎么可能。 http://www.onlinedemowebsite.com/design/swatch/drag-and-drop/try3.html 谢谢 – Krishnendu 2012-04-12 05:25:16

+0

你应该仍然不能在洗牌中使用document.write。尝试将其改为在DOM节点上工作。您也可以添加onclick =“return shuffle()”,然后从shuffle方法返回false以避免在url中添加“#”。 – xorath 2012-04-12 13:33:52