为 Mailto 设置 HREF:

Setup HREF for Mailto:

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

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

我知道 Javascript 有 link 编码,但 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>

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

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

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

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

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

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

您必须在 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';
}
<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>

请注意我是如何从您的 <a> 标签中删除 <button> 标签的。那是因为不需要,你可以用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;
}