从目录 (AD) 中读取的 HTML 中删除电子邮件签名中的行

Posted

技术标签:

【中文标题】从目录 (AD) 中读取的 HTML 中删除电子邮件签名中的行【英文标题】:Delete row in email signature from HTML being read from Directory (AD) 【发布时间】:2019-12-04 21:27:08 【问题描述】:

我正在尝试通过 jquery 或 javascript 删除 html 中的一行。我正在从目录中读取,但如果一行中没有信息,我不希望它可见。假设我有两行,目录中的用户没有手机号码,如何为他们删除?

我真的尝试了很多东西,但我一定错过了一些东西。

<tr>
   <td>email: %%email%%</td>
</tr>
<tr>
   <td>mobile: %%MobileNumber%%</td>
</tr>

我假设该行将只为没有手机号码的用户删除。

【问题讨论】:

显示js。您可以通过 $.("table > tr > td:nth-of-type(2)").html(""); 访问 trs; 这不是一个有效的 html 结构。您的 &lt;tr&gt;&lt;td&gt; 关系颠倒了。由于浏览器实际处理它们的渲染方式,尝试在无效结构上使用 js 会产生不一致的结果 标题应该是对问题的简要总结,而不是完全不相关的故事-> Help Center - How do I ask a good question? 那么%%MobileNumber%% 是什么......我猜你用来吐出来的东西都不应该这样做...... @charliefl 那是我的错,我急着写。 【参考方案1】:

您需要将文本设置为变量,然后找到“:”之后的子字符串,它将返回 %%MobileNumber%%。

如果子字符串为空,那么我们隐藏它。

如您所见,第三个td 没有所需的文本,因此它被隐藏了。

$(function() 

  $('td').each(function() 
    var str = $(this).text();
    var sub = str.substring(
      str.indexOf(':', 1) + 1
    );
    if (sub == '') 
      // or .remove()
      $(this).hide();
    
  );

);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>email: %%email%%</td>
    </tr>
    <tr>
      <td>mobile: %%MobileNumber%%</td>
    </tr>
    <tr>
      <td>mobile:</td>
    </tr>
  </tbody>
</table>

如果您只希望它用于包含“mobile:”的 td:

// find if a td starts with "mobile:" and if the substring after is empty
if ( str.match("^mobile:") && sub == '' ) 
    $(this).hide();

【讨论】:

嘿!我只是尝试了这个,但没有运气,感谢您的尝试,不知道是什么问题。 真的吗?您插入 td 的数据到底是什么? 我们正在使用“%%MobileNumber%%”术语从 Azure 目录收集信息并将其显示在 td.我们正在处理名字、姓氏等,如果用户没有手机号码,则不会显示“m:”行。 当您尝试此操作时,您将代码放在哪里,在加载文本 (%%MobileNumber%%) 之前还是之后? 我把它放在前后,但遗憾的是没有为我工作。只是好奇,它对你有用吗?【参考方案2】:

在要隐藏的行中添加一个id,将mobile:放在&lt;td&gt;之外,然后使用JQuery实现同样的效果

<tr id="hideIfNoData"> 
     mobile:<td> %%MobileNumber%%</td> 
</tr>

$('#hideIfNoData > tr td:empty').parent().hide()

【讨论】:

$(function() $('#hideIfNoData tr').each(function() var val = $(this).text().trim(); if(val == 'mobile:') $(this).remove(); ) ) 试试这样的 很遗憾,那个也没有运气 把 mobile: 放在 外面并检查 td 是否为空然后删除整个 手机: %%MobileNumber%% $('#hideIfNoData > tr td:empty').parent() .hide() @RajendraGupta 你不能将文本节点作为&lt;tr&gt;的直接子节点

以上是关于从目录 (AD) 中读取的 HTML 中删除电子邮件签名中的行的主要内容,如果未能解决你的问题,请参考以下文章

从 Outlook 电子邮件中提取嵌入的图像

从按钮引导程序 4 中删除禁用属性

将电子邮件附件保存在硬盘上后,如何以编程方式删除它们[重复]

电子邮件传输的协议是啥?

c++下使用邮槽实现进程间通信

对于从 java 程序发送的电子邮件,html 内容中的 png 图像未显示在 gmail 客户端上