1

以下のコードは、アップロードフィールドへのリンクを追加します。新しいクリックごとに、合計5つまでのフォームへの新しいアップロードフィールドが表示されます。Chromeなどにエラーはありません。

スクリプトは他のブラウザではうまく機能しているようですが、IE8ではエラーがスローされるため、以下の行の何が問題になっているのか知りたいですObject doesn't support this action。代替コードを提案できますか?

<div id="edit-submitted-file1-ajax-wrapper" style="display: block;">
    //upload field here
</div>
<a id="addmore" href="#">[+] Add more</a>

<div id="edit-submitted-file2-ajax-wrapper" style="display: block;">
    //upload field here
</div>

<div id="edit-submitted-file3-ajax-wrapper" style="display: block;">
    //upload field here
</div>

first = $('.webform-client-form').find('div[id$="-ajax-wrapper"]').first();
        first.after('<a id="addmore" href=#>[+] Add more</a>');
        $('.webform-client-form').find('div[id$="-ajax-wrapper"]').each(function(){
            $(this).hide();
            first.show();
        });

var c = 0;
$('#addmore').bind('click', function(e) {
    //HERE BELOW IS THE LINE WITH ERROR
    item = $('#edit-submitted-file'+ c +'-ajax-wrapper');
    item.show();
    ++c;
    if (c == 5) {
        $('#addmore').hide();
        return false;
    }
});
4

2 に答える 2

1

これを変える

item = $('#edit-submitted-file'+ c +'-ajax-wrapper');

これに

var item = $('#edit-submitted-file'+ c +'-ajax-wrapper');

http://jsfiddle.net/fJ3EG/2/

于 2012-12-19T10:06:03.173 に答える
0

おそらく、以前にHTMLのどこかで「item」という単語を使用したことがあります。変数をとして宣言するvar itemと、問題が解決するはずです。

Stackoverflowに関するこの以前の投稿を参照してください:

私の推測では、名前またはIDが「item」のページに何かがあり、IEがそれを行うため、それがwindowのプロパティになりつつあります(...)

つまり、変数名としてjavascriptと'item'

于 2013-01-20T13:50:10.550 に答える