首页 文章

使用循环使用jQuery打开Outlook新电子邮件窗口

提问于
浏览
0

我在网页上有一个记录列表(比如说html表) .

<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();

所以,这里的列名或变量名对我来说并不重要 . 我在循环和设置方面面临问题 . 所有窗户都不应该打开 .

虽然循环运行的次数应该是应有的,但有些只有1/2的新电子邮件Outlook窗口打开 . 哪个错了 . 我想这是因为JS循环不等待响应或其他任何事情 .

我希望你们都明白我的问题 . 如果有任何其他问题需要提及或澄清,请告诉我 .

我需要这个解决方案 . 任何帮助赞赏 .

谢谢 .

1 回答

  • 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 .
    此外,还有更优雅的方式来弹出电子邮件对话框 .

相关问题