我一直在搜索并搜索此代码仅在IE中断行的原因。似乎可以在Firefox和Chrome中使用。 IE8调试器不断抱怨并突出显示这段代码。
var query = {
display: opts.display.join(', '),
quotes: opts.stocks.map(function (stock) {
return '"' + stock + '"';
}).join(', ')
}
甚至尝试使用jQuery.noConflict,这只会使它在任何浏览器中都不起作用。在这个项目中根本没有专门调用原型,它只是一个基本的股票符号列表,上面的这个变量基本上只是根据YQL标准将两者之间的“和逗号联系起来。不知道为什么会导致错误。
-update 我发现了为什么我收到这个错误。 IE8及以下版本不支持javascript map()函数。我已经阅读了有关替代品的示例,有人建议使用jQuery map函数,这似乎也不起作用,或者我只是没有正确地编写它。所有尝试都在var查询上我试图基本上递归遍历数组并添加YQL查询所需的惩罚。
function getStock(opts, complete) {
var defs = {
desc: false,
baseURL: 'http://query.yahooapis.com/v1/public/yql?q=',
query: 'select {display} from yahoo.finance.quotes where symbol in ({quotes}) | sort(field="{sortBy}", descending="{desc}")',
suffixURL: '&env=store://datatables.org/alltableswithkeys&format=json&callback=?'
};
opts = $.extend({
display: ['*'],
stocks: []
}, opts || {});
if (!opts.stocks.length) {
complete('No stock defined');
return;
}
//var query = $.map({
//display: opts.display.join(', '),
//quotes: opts.display.stocks(function(stocks) {
//return '"' + stocks + '"';
//}).join(', ')
// });
//var query = {
//display: opts.display.join(', '),
//quotes : $.map(opts.display.stocks(quotes, function(stock) {
//return '"' + stock + '"';
//})).join(', ')
//};
alert(query);
//var query = {
//display: opts.display.join(', '),
//quotes: opts.stocks.map(function (stock) {
//return '"' + stock + '"';
//}).join(', ')
//};
//function (stock) returns "ticker symbol"
defs.query = defs.query.replace('{display}', query.display).replace('{quotes}', query.quotes).replace('{sortBy}', defs.sortBy).replace('{desc}', defs.desc);
defs.url = defs.baseURL + defs.query + defs.suffixURL;
$.getJSON(defs.url, function (data) {
var err = null;
if (!data || !data.query) {
err = true;
}
complete(err, !err && data.query.results);
var items = data.query.results.quote;
alert(items[0].LastTradePriceOnly);
});
}
我已经包含了这个变量替换的所有失败的迭代。它们都不适用于任何浏览器。也许有人可以协助将其翻译成jQuery equivelant?
答案 0 :(得分:0)
好的我想通了,使用jQuery.com对map函数的引用,这将是从前一个语句的正确转换
原单
var query = {
display: opts.display.join(', '),
quotes: opts.stocks.map(function (stock) {
return '"' + stock + '"';
}).join(', ')
};
jQuery转换
var query = {
display: opts.display.join(', '),
quotes: $.map(opts.stocks, function (stock) {
return '"' + stock + '"';
}).join(', ')
};
过时IE浏览器的结束映射问题