2017-06-19 71 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”,必须是动态的。 –

相关问题