编辑*
在我们网站的其中一个页面中,有一个带有讲话泡泡的海盗讲述了笑话。单击气泡时,笑话会在列表中随机更改为另一个。出于某种原因,这在IE9或更低版本中不起作用。谁能告诉我为什么?
我已检查控制台并出现此错误
"CE2.w.external.InPrivateFilteringEnabled is not a function"
这是脚本:
$(document).ready(function () {
var list = $(".joke-list li").toArray();
var elemlength = list.length;
// Encapsulate random value assignment within a function
var setRandomValue = function(element) {
var randomnum = Math.floor(Math.random() * elemlength);
var randomitem = list[randomnum];
$(element).html($(randomitem).text());
}
// Bind click button
$('.speech').click(function () {
setRandomValue(this);
});
// Set random value for the first time
setRandomValue($('.speech'));
$('.speech').css("width: 1000px;");
});
这是一个小提琴,我把它拼凑在一起以显示错误:http://jsfiddle.net/uRd6N/116/
答案 0 :(得分:1)
尝试这个,更简单&清洁代码
$(document).ready(function () {
var list = $(".joke-list").find("li").map(function(){return $(this).text();});
// Bind click
$(document.body).on('click','.speech', function () {
var rndnum=Math.floor(Math.random() * list.length);
console.log(rndnum);
$(this).html(list[rndnum]);
});
//first rand joke
$(".speech").trigger("click");
});
看到你的HTML后我猜你的问题是你的演讲div是你的笑话列表的父母
答案 1 :(得分:0)
我想这是函数分配中缺少的分号。试试这个:
// Encapsulate random value assignment within a function
var setRandomValue = function(element) {
[...]
}; // add semicolon here
答案 2 :(得分:0)
您在下面的功能中遗漏了;
。
试试这个:
$(document).ready(function () {
var list = $(".joke-list li").toArray();
var elemlength = list.length;
// Encapsulate random value assignment within a function
var setRandomValue = function(element) {
var randomnum = Math.floor(Math.random() * elemlength);
var randomitem = list[randomnum];
element.html($(randomitem).text());
};// <----';' is missing here ie will create issues here
// Bind click button
$('.speech').click(function () {
setRandomValue($(this));
});
// Set random value for the first time
setRandomValue($('.speech'));
$('.speech').css("width","1000px"); //<---apply css this way;
});
看看这是否能解决您的问题。