0

このコードが IE でのみ壊れる理由を探し続けてきました。Firefox と Chrome で動作するようです。IE8 デバッガーは、このコード ブロックを不平を言い続け、強調表示します。

var query = {
            display: opts.display.join(', '),
            quotes: opts.stocks.map(function (stock) {
                return '"' + stock + '"';
            }).join(', ')
        }

jQuery.noConflict を使用してみましたが、どのブラウザーでも機能しませんでした。このプロジェクトでは特にプロトタイプを呼び出す必要はありません。株式シンボルの基本的なリストであり、上記の変数は基本的に、YQL 標準に従って 2 つの間の " とコンマを結び付けるだけです。なぜこれがエラーを引き起こしているのかわかりません。

-更新 このエラーが発生する理由がわかりました。IE8 以下は、JavaScript の map() 関数をサポートしていません。代替案の例を読んだことがありますが、誰かが jQuery マップ関数の使用を提案しましたが、それもうまくいかないようです。または、正しく記述していないだけです。すべての試行は、基本的に再帰的に配列を調べて、YQL クエリに必要な句読点を追加しようとしている var クエリに対するものです。

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の同等物に翻訳するのを手伝ってくれるでしょうか?

4

1 に答える 1