jQuery错误:对象不存在';不支持此属性或方法

jQuery错误:对象不存在';不支持此属性或方法,jquery,Jquery,我一直在寻找这个代码只在IE中出现的原因。似乎可以在Firefox和Chrome中使用。IE8调试器不断抱怨并突出显示这段代码 var query = { display: opts.display.join(', '), quotes: opts.stocks.map(function (stock) { return '"' + stock + '"'; }).join(', ')

我一直在寻找这个代码只在IE中出现的原因。似乎可以在Firefox和Chrome中使用。IE8调试器不断抱怨并突出显示这段代码

var query = {
            display: opts.display.join(', '),
            quotes: opts.stocks.map(function (stock) {
                return '"' + stock + '"';
            }).join(', ')
        }
甚至尝试使用jQuery.noConflict,这只会使它无法在任何浏览器中工作。在这个项目中根本没有特别调用prototype,它只是一个基本的股票符号列表,根据YQL标准,上面的这个变量基本上只是将两者之间的“和逗号”联系起来。不知道为什么会导致错误

-更新 我已经找到了出现此错误的原因。IE8及以下版本不支持javascript映射()函数。我已经阅读了关于替代方案的示例,有人建议使用jQuery映射函数,但这似乎也不起作用,或者我只是没有正确编写它。所有尝试都是在var查询上进行的。我尝试基本上递归地遍历数组,并添加YQL查询所需的puncuation

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 equalant?

好的,我通过使用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浏览器的结束映射问题

哪一行给了您这个错误?什么是
opts.stocks
?我假设它是
opts.stocks.map
行。在IE8中不存在。您需要填充它:???这一行甚至没有使用jQuery!您可能需要.get()在.map()之后,如果opts.stocks是jquery对象。否则,这与jquery无关。