如何使用DOM方法在JavaScript调用位置插入文本

如何使用DOM方法在JavaScript调用位置插入文本,javascript,dom,Javascript,Dom,我想使用javascript方法“saveMailAddress”隐藏我网站上的电子邮件地址,该方法以“name”、“domain”和“TLD”作为参数。之后,这个方法应该向DOM树添加一个节点“a” 但是我怎样才能找到添加对象的位置呢 在HTML中,它应该如下所示(由PHP脚本生成): 但是如何将新元素放置到调用函数的父元素中?可能 <p id='mailadress'> <script type="text/javascript"> docum

我想使用javascript方法“saveMailAddress”隐藏我网站上的电子邮件地址,该方法以“name”、“domain”和“TLD”作为参数。之后,这个方法应该向DOM树添加一个节点“a”

但是我怎样才能找到添加对象的位置呢

在HTML中,它应该如下所示(由PHP脚本生成):

但是如何将新元素放置到调用函数的父元素中?

可能

<p id='mailadress'>
    <script type="text/javascript">
        document.write(saveMailAdresses("name", "domain", "tld");
    </script>
</p>


function saveMailAdresses(name, domain, tld) {
        return "<a href=''>test</a>";
}

写(保存邮件地址(“名称”、“域”、“tld”);

函数saveMailAddresses(名称、域、tld){ 返回“”; }
插入的A标记是否在href中包含实际的电子邮件地址?如果是,则仍然可以通过任何现代浏览器的调试工具获取电子邮件地址,或者只需单击链接打开电子邮件客户端,并在“收件人”字段中显示地址

如果您仍然想这样做,您可以在页面的开头创建一个数组,该数组接受一个对象,该对象包含要添加的每个地址的元素和上面的三个变量,为每个地址的数组添加一个对象,然后在页面循环结束时通过数组调用每个对象上的函数(使用带有附加元素参数的方法签名)


如果你真的想保护你的电子邮件地址,你可以有一个表单,由用户填写并发回服务器,然后让服务器根据表单中的值(即哪个部门的下拉列表等)将电子邮件发送给正确的人。这样,客户端将永远看不到电子邮件地址。

您可以使用HTML5
数据-
属性。为了简单起见,此示例使用jQuery,但如果需要,您可以在纯DOM中编写它:

<script>
  $(function() {
    $(".email").each(function (){
      var $this = $(this),
          address = $this.data("username") + "@" + $this.data("domain") + "." + $this.data("tld"),
          $link = $("<a>").attr("href", "mailto:" + address).html("link text");

      $this.append($link);
    });
  });​
</script>

<p>
  My e-mail address:
  <span class="email" data-username="someone" data-domain="example" data-tld="com"></span>
<p>

$(函数(){
$(“.email”)。每个功能(){
变量$this=$(this),
address=$this.data(“用户名”)+“@”+$this.data(“域”)+“+$this.data(“tld”),

$link=$(“

但是onload eventHandler只允许在和中使用(德语源代码:),而且w3验证程序也给出错误“没有属性”onload"例如,尝试“test”,然后你必须给
元素一个ID,你可以访问它。我将在上面更新代码。没有ID,也没有onload,这是不可能的吗?我永远不知道页面上有多少电子邮件地址,…嗯,至少可以通过调用javascript函数来显示ma来避免onloadil地址直接在p元素之后,可以用PHP生成随机ID,但我还是不满意,。。。
<p id='mailadress'>
    <script type="text/javascript">
        document.write(saveMailAdresses("name", "domain", "tld");
    </script>
</p>


function saveMailAdresses(name, domain, tld) {
        return "<a href=''>test</a>";
}
<script>
  $(function() {
    $(".email").each(function (){
      var $this = $(this),
          address = $this.data("username") + "@" + $this.data("domain") + "." + $this.data("tld"),
          $link = $("<a>").attr("href", "mailto:" + address).html("link text");

      $this.append($link);
    });
  });​
</script>

<p>
  My e-mail address:
  <span class="email" data-username="someone" data-domain="example" data-tld="com"></span>
<p>