Javascript jQuery无法正确执行

Javascript jQuery无法正确执行,javascript,jquery,html,Javascript,Jquery,Html,这是我的HTML: <!DOCTYPE html> <html> <head> <title>Esileht</title> <link rel="stylesheet" href="prax2.css" /> </head> <body> <div id="stuff"> <a href="" class="btn" id="stuff_bt

这是我的HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Esileht</title>
    <link rel="stylesheet" href="prax2.css" />
</head>
<body>
    <div id="stuff">
        <a href="" class="btn" id="stuff_btn">START</a><br />
    </div>
    <div class="span10" id="word_place">
        <div class="word_grid" id="word_place_grid">
            <ul>
            </ul>
        </div>
    </div>
<script src="jquery.js"></script>
<script src="underscore.js"></script>
<script src="prax2.js"></script>
</body>
</html>

埃斯利特

这是无法在prax2.js文件中正常运行的jQuery:

$('#stuff_btn').on('click', function(){
    var words = ["arvuti","pudel","mudel","blaaah","shfuiah","ashcfah"];
    var random = Math.floor(Math.random() * words.length);
    var word = words[random];   
    var chars = word.split('');
    chars = _.shuffle(chars);
    for(var i in chars)
    {
        $('#word_place_grid ul').append('<li class="letter">' +  i +  '</li>');
    }
})
$('stuff#btn')。在('click',function()上{
var words=[“arvuti”、“pudel”、“mudel”、“blaaah”、“shfuiah”、“ashcfah”];
var random=Math.floor(Math.random()*words.length);
变量字=字[随机];
var chars=单词分割(“”);
字符=\洗牌(字符);
用于(以字符表示的变量i)
{
$('word_place_grid ul')。追加('li class=“letter”>'+i+'');
}
})
问题是,我想将已被洗牌的字母添加到
ul
。每个字母都是一个
li
。问题是,我得到的都是1-6之间的数字,当我尝试在脚本运行期间记录结果时,有时我会在控制台中得到结果,有时不会,并且它总是只显示一毫秒左右


有人能发现问题吗?它是在我的html或脚本中还是在其他地方?

您已将事件处理程序附加到链接(到当前页面)

JS运行。文档将更新。链接被跟踪。页面被重新加载

如果您希望具有仅适用于JS的交互性,请使用

如果要使用链接,请链接到具有等效功能的服务器端脚本(很好),然后在JS成功运行时取消事件的默认行为

$('#stuff_btn').on('click', function(evt){ // Capture the event object
// ...
    }
    evt.preventDefault();
})

您已将事件处理程序附加到链接(到当前页面)

JS运行。文档将更新。链接被跟踪。页面被重新加载

如果您希望具有仅适用于JS的交互性,请使用

如果要使用链接,请链接到具有等效功能的服务器端脚本(很好),然后在JS成功运行时取消事件的默认行为

$('#stuff_btn').on('click', function(evt){ // Capture the event object
// ...
    }
    evt.preventDefault();
})

你看到这个数字是因为for循环,其中i是索引。尝试:

for(var i in chars)
{
    $('#word_place_grid ul').append('<li class="letter">' +  chars[i] +  '</li>');
}
for(变量i以字符为单位)
{
$('word_place_grid ul')。追加('li class=“letter”>'+chars[i]+'');
}

因为for循环中的i是索引,所以您可以看到这个数字。尝试:

for(var i in chars)
{
    $('#word_place_grid ul').append('<li class="letter">' +  chars[i] +  '</li>');
}
for(变量i以字符为单位)
{
$('word_place_grid ul')。追加('li class=“letter”>'+chars[i]+'');
}
使用
e.preventDefault()
来防止
的默认行为。并确保您的脚本位于
文档中。准备就绪
函数

$(function(){
$('#stuff_btn').on('click', function(e){
 e.preventDefault();
var words = ["arvuti","pudel","mudel","blaaah","shfuiah","ashcfah"];
var random = Math.floor(Math.random() * words.length);
var word = words[random];   
var chars = word.split('');
chars = _.shuffle(chars);
for(var i in chars)
{
  $('#word_place_grid ul').append('<li class="letter">' +  i +  '</li>');
}
})
});
$(函数(){
$('stuff_btn')。在('click',函数(e)上{
e、 预防默认值();
var words=[“arvuti”、“pudel”、“mudel”、“blaaah”、“shfuiah”、“ashcfah”];
var random=Math.floor(Math.random()*words.length);
变量字=字[随机];
var chars=单词分割(“”);
字符=\洗牌(字符);
用于(以字符表示的变量i)
{
$('word_place_grid ul')。追加('li class=“letter”>'+i+'');
}
})
});
使用
e.preventDefault()
来防止
的默认行为。并确保您的脚本位于
文档中。准备就绪
函数

$(function(){
$('#stuff_btn').on('click', function(e){
 e.preventDefault();
var words = ["arvuti","pudel","mudel","blaaah","shfuiah","ashcfah"];
var random = Math.floor(Math.random() * words.length);
var word = words[random];   
var chars = word.split('');
chars = _.shuffle(chars);
for(var i in chars)
{
  $('#word_place_grid ul').append('<li class="letter">' +  i +  '</li>');
}
})
});
$(函数(){
$('stuff_btn')。在('click',函数(e)上{
e、 预防默认值();
var words=[“arvuti”、“pudel”、“mudel”、“blaaah”、“shfuiah”、“ashcfah”];
var random=Math.floor(Math.random()*words.length);
变量字=字[随机];
var chars=单词分割(“”);
字符=\洗牌(字符);
用于(以字符表示的变量i)
{
$('word_place_grid ul')。追加('li class=“letter”>'+i+'');
}
})
});

您正在使用一个
for in
语句,它迭代数组的键/属性

for(var i in chars)...
for中的
i
指的是索引,而不是数组的实际元素。虽然,
chars[i]
可以在这里工作,但它也可以打印添加到
Array.prototype的任何其他属性。
也就是说,
Array.prototype.someProperty='a property'
将导致显示
'a property'

使用

这个例子很有效


您正在使用
for in
语句,该语句迭代数组的键/属性

for(var i in chars)...
for中的
i
指的是索引,而不是数组的实际元素。虽然,
chars[i]
可以在这里工作,但它也可以打印添加到
Array.prototype的任何其他属性。
也就是说,
Array.prototype.someProperty='a property'
将导致显示
'a property'

使用

这个例子很有效


您的主机上说什么?您会遇到什么错误?您可以为此提供一个JSFIDLE吗?不要使用
来。。。在
中用于阵列。
字符[i]
是您想要的。您的控制台会说什么?您会遇到什么错误?您可以为此提供一个JSFIDLE吗?不要使用
来。。。用于数组。
chars[i]
是您想要的谢谢,我没有意识到。谢谢,我没有意识到。