2017-06-19 27 views
0

我有一個網頁上的記錄列表(比如說html表格)。使用循環使用jQuery打開Outlook新電子郵件窗口

<table> 
    <tr> 
     <th>checkbox</th> 
     <th>id</th> 
     <th>name</th> 
    </tr> 
<tr> 
<td><input type="checkbox" name="email[]">1</td> 
<td>1</td> 
<td>Germany</td> 
</tr> 
<tr><td><input type="checkbox" name="email[]">2</td> 
<td>2</td> 
<td>Mexico</td> 
</tr> 
<tr> 
<td><input type="checkbox" name="email[]">3</td> 
<td>3</td> 
<td>Austria</td> 
</tr> 
<tr> 
<td><input type="checkbox" name="email[]">4</td> 
<td>4</td> 
<td>UK</td></tr> 
</table> 

現在,當我選擇不同/所有複選框並單擊按鈕。

它應該爲每條記錄分別打開新的Outlook窗口。 如果我選擇所有4個複選框,那麼它應該打開4個不同的新電子郵件窗口。 我已經在這裏提到了很多問題。但無法弄清楚。

最大的問題是我可以運行循環。但每次它都無法打開不同的窗口。有時它只打開1/2個窗口。我猜是循環和Settimeout的問題。

這裏是我的代碼:

function sendMails() { 
     sendMail_table.$('input:checked').each(function (i, value) { 
      (function (that, m) { 
       var t = setTimeout(function() { 
       if (m.checked) { 
        var rowIndex = sendMail_table.row($(m).closest('tr')).data(); 
        var party_name = rowIndex[6]; 
        var find = $('#party_email_data td').filter(function() { 
         return $(this).text() === party_name; 
        }); 
        emails = party_email_data.row(find.closest('tr')).data(); 
        email_add = emails[1]; 
        email_cc = emails[2]; 
        wnd = window.open("mailto:email_id?subject=hello hi&body=dfdsf", 
    "_blank", "sdf" + i); 
       } 
      }, 1500); 
     })(this, value); 
    }); 
} 
sendMails(); 

所以,herecolumn名或變量名是不是得到解決對我很重要。我面臨着環路和SETTIMEOUT的問題。所有的窗戶都不會按照他們的要求打開。

雖然循環運行的次數應該是這樣,但一些如何只有1/2新的電子郵件展望窗口打開。這是錯誤的。我想這是因爲JS循環不等待響應或其他任何事情。

我希望你們都明白我的問題。 讓我知道是否有其他要提及或澄清。

我需要這個解決方案。任何幫助讚賞。

謝謝。

+0

這裏是樣品HTML表格:

​​ 1 ​​1 ​​德國 ​​ 2 ​​2 ​​墨西哥 ​​ 3 ​​3 ​​奧地利 ​​ 4 ​​4 ​​英國
複選框 ID 名稱

+0

您可以發佈它在你的問題? –

+0

定義的變量sendMail_table在哪裏? –

回答

0

出於某種原因,郵件彈出並沒有爲我好工作,要麼當它是超時內。 什麼工作,將電子郵件彈出超時。

function sendMails() { 
    sendMail_table.$('input:checked').each(function(i, value) { 
    (function(that, m) { 
     var t = setTimeout(function() { 
     if (m.checked) { 
      var rowIndex = sendMail_table.row($(m).closest('tr')).data(); 
      var party_name = rowIndex[6]; 
      var find = $('#party_email_data td').filter(function() { 
      return $(this).text() === party_name; 
      }); 
      emails = party_email_data.row(find.closest('tr')).data(); 
      email_add = emails[1]; 
      email_cc = emails[2]; 
     } 
     }, 1500); 
    })(this, value); 
    wnd = window.open("mailto:email_id?subject=hello hi&body=dfdsf", "_blank", "sdf" + i); 
    }); 
} 
sendMails(); 

順便說一句,我不知道爲什麼你需要的timeout那裏。
另外,還有一些彈出一個對話框電子郵件的更優雅的方式。

+0

(功能myLoop(I){ \t \t的setTimeout(函數(){ \t \t \t WND = window.open( 「電子郵件地址:[email protected]受試者=你好喜&體= dfdsf」, 「_空白」,」 ssdfsd「+ I); //你的代碼在這裏 \t \t \t如果(--i)myLoop(I); //減量我再喊myLoop如果我> 0 \t \t \t \t的setTimeout(函數(){ \t \t \t \t \t \t wnd.close(); \t \t \t \t},1200); \t \t},1500) })(6);這工作正常。這正是我想要的。現在我必須爲我所有選中的複選框運行這個(可能使用.each循環)。此處傳遞的參數值是「6」,必須是動態的。 –

相關問題