0

ChromeまたはFirefoxで実行したときの私のコードは、意図したとおりに機能しました。ただし、Internet Explorerでは、エラーが発生します。残念ながら、デバッガーは呼び出しスタックからトップレベルのみを取得します。つまり、自分のスクリプトの最初の関数呼び出しの行番号と、圧縮されたjQueryの4行目のうち3行目を取得します。さらに、エラーは紛らわしいです:

オブジェクトはこのプロパティまたはメソッドをサポートしていません

jQueryソースにリンクすると奇妙に見えます。どちらのエラーも、オブジェクトメソッドを呼び出した行に対するものではありません。スクリプトの呼び出しがバグの行番号として指定されている関数は次のとおりです。

$('title').text('Student accommodaton in '+loc.title);
$('fieldset.search').data('loc',loc.loc_id).find('p.locs').slideUp().end().find('ul.blurb').hide();
$('nav.top').find('li.index a').attr('href',loc.url)
.end().find('p.user').addClass('show');
$('header.title').find('h2').each(function(loc){
    return function(){
        $(this).data('text',$(this).text()).text('Student accommodation in '+loc.title);
    }
}(loc))
.end().find('p').fadeIn();
$('section.register h3:first').textPrepend('Scroll down and ');
4

1 に答える 1

0

エラーの原因は次のコードであることが判明しました

$('title').text('Student accommodaton in '+loc.title);

適切なデバッグソフトウェアがないIETesterを使用しているので、一度に1行ずつ削除することでこれを見つけました。一方、次のコード:

$('p').text().text('Test');

返されたオブジェクト(テキスト文字列)にメソッドがないことを正しく示します。jQueryがメソッドを適用しようとする.text()と、を使用$('title')するとより抽象的なエラーが返されるようです。したがって、バグの行番号は、関数スタックに伝播して戻ってきたため、間違っていました。

つまり、タイトルを変更するときは

document.title='Test';

また、jQueryソースにエラーが表示される場合は、最初に、使用している可能性のある奇数のセレクターまたは<head>要素セレクターを探します。

于 2012-09-18T15:41:49.673 に答える