2016-07-27 16 views
0

私はのウェブページを持っています。JavaScriptのここで、各項目の横にチェックボックスを表示し、トリガーすると選択したすべての項目のダウンロードを開始するボタンが表示されます項目。私が実装したソリューションは、FirefoxとChromeでは正常に動作しますが、Internet Explorerでは1つのファイルしかダウンロードされません。これは、以下のコードでクリック()イベントがちょうどIEのために一度実行されるように、それがループから出て取得し、機能を実行するために停止して見えます:JavaScriptで複数のclick()イベントが発生しない

var links = []; 
//populate links with a collection of URLs 
var link = document.createElement('a'); 
link.setAttribute('download', null); 
link.style.display = 'none'; 

document.body.appendChild(link); 

for (var i = 0; i < links.length; i++) { 
    link.setAttribute('href', links[i]); 
    link.click(); 
} 

私はそれを防ぐにはどうすればよいですか?ありがとう

+4

なぜAngularJSを使用している場合、domを手動で追加/更新していますか?それは目的を破るものです(また、いくつかの奇妙な副作用があります) – Jamiec

+0

AngularJSの詳細については、いくつかの素晴らしいegghead.ioビデオがあります。また、コードスクールにはいくつかの良い無料のインタラクティブなコースがあり、その多くは無料です。 AngularJS –

+0

@Jamiecのコンセプトとメリットを学ぶ楽しい方法であることがわかりましたが、それは質問に文脈を与えることでしたが、私はそれが冗長であることに気付きました。質問は単にJavascriptを参照することができます(編集を参照) – CiccioMiami

答えて

2

私はそれを得ると、すべてのリンクをクリックしますが、前のクリックがすべて新しいリンクによって上書きされるため、最後のリンクのみを実行します。

それは)(私はこれがどのように良い、私は通常、1つのすべてのファイルをアーカイブしますが、場合によっては異なる場合がありますについてはよく分からない、それが動作します。)インラインフレームを使用することによって解決することができます。

var links = ["http://link/to/the/file.zip", "http://link/to/the/file2.zip"]; 

for (var i = 0; i < links.length; i++) { 
    var f = document.createElement("iframe"); 
    f.style.display="none"; 
    document.body.appendChild(f); 
    f.src = links[i]; 
} 
+0

それはdownvotedされて以来、なぜ説明できますか?私は怒られていない、私はちょうどこのアプローチの何が問題なのか知りたい。 –

+0

申し訳ありませんが、私はupvoteしたいと思ったが、私は間違いをした。編集をして、私はあなたに私の投票を与えます – CiccioMiami

+0

@CiccioMiamiああ、クール!私は今、穏やかです:) –

関連する問題