为Mailto设置HREF:

时间:2017-08-04 17:32:18

标签: javascript html html-email

错误消息:无法将属性'innerHTML'设置为null。

我注意到href="mailto:<a id="Email">...中的问题是"",但如何在不将mailto移动到javascript的情况下更改电子邮件ID?或者是否可能。

我知道Javascript中有链接编码,但在HTML中是否相同? (例如:href='mailto:'<a id="Email">'...

function Email_Address() {

  var emailaddress = document.getElementByID("EmailAddress").value;
  document.getElementById("Email").innerHTML = emailaddress;

}
Email Address: <input type="text" id="EmailAddress" onkeyup="Email_Address()" onchange="Email_Address()">
<br>
<br>
<a href='mailto:<a id="Email">?subject=Test&body=This%20is%20Test'><button>Email</button></a>

3 个答案:

答案 0 :(得分:1)

您不能将元素放在属性值中。

将ID放在您已经拥有的锚点开始标记上。

使用字符串替换来更改电子邮件地址。

 <a id="Email" href='mailto:PLACEHOLDER?subject=Test&body=This%20is%20Test'>

document.getElementById("Email").href = 
     document.getElementById("Email").href.replace("PLACEHOLDER", emailaddress);

注意:<button>内不能有<a>。由于您要链接到网址,请使用<a>。如果您希望它看起来像一个按钮,请使用CSS。

答案 1 :(得分:1)

您必须在javascript中设置整个href标记。你不能用HTML做到这一点。请尝试以下方法:

Email Address: <input type="text" id="EmailAddress" onkeyup="Email_Address()" onchange="Email_Address()">
<br>
<br>
<a id="anchorMail"><button>Email</button></a>

在JS中:

function Email_Address() {
    var emailaddress = document.getElementByID("EmailAddress").value;
    document.getElementById("anchorMail").href = 'mailto:'+ emailaddress +'?subject=Test&body=This%20is%20Test';
}

答案 2 :(得分:0)

<a href='mailto:<a id="Email">?subject=Test&body=This%20is%20Test'><button>Email</button></a>

上面的代码行无效HTML ,因为您可以花时间阅读的anchor tag specification,也可以随意跳转到mailTo部分。

因此,为了使您的代码有效:

<a href='mailto:someemailaddress@somewhere.org&subject=Test&body=This%20is%20Test' id="email">Email</a>

请注意我是如何从<button>标记中删除<a>标记的。这是因为没有必要,您可以使用CSS通过id #email修改上面的锚标记,使其看起来像一个按钮。有很多非常有用的在线参考可以帮助您实现这一目标。

现在,在JavaScript中,您可以通过使用id访问它来修改上面的锚元素,如下所示:

function Email_Address() {
  // grabbing the value of an element with ID of `EmailAddress`
  var emailAddress = document.getElementByID("EmailAddress").value;
  // setting the value of `emailaddress` to the element with ID of `email`.
  document.getElementById("email").innerHTML = emailAddress;
}