相同的Javascript函数适用于两个不同的div
我已经在移动设备上使用了这个javascript函数,我需要在桌面上使用它,但是元素的ID不一样,我想知道是否有人可以给我一个如何处理这个问题的提示相同的Javascript函数适用于两个不同的div,javascript,html,Javascript,Html,我已经在移动设备上使用了这个javascript函数,我需要在桌面上使用它,但是元素的ID不一样,我想知道是否有人可以给我一个如何处理这个问题的提示 function EventMailing() { var email = document.querySelector("#newsletter-popup fieldset #email").value; if (email == undefined) { email = "";
function EventMailing() {
var email = document.querySelector("#newsletter-popup fieldset #email").value;
if (email == undefined) {
email = "";
if (email == undefined || email == "") return;
}
var rgxHome = new RegExp(".*?://(.*)someurl.com($|/|/?(.*))$");
if (rgxHome.test(location.href)) {
SendEmail(email);
document.querySelector("#newsletter-popup fieldset #email").value = "";
setTimeout(function () {
$("#newsletter-popup").css("display", "none");
}, 2000);
}
我的手机Html代码:
<div id="newsletter-popup" >
<a class="close icon-button-close" href="#"></a>
<h2>Suscribe to Newsletter</h2>
<p>some text</p>
<fieldset>
<label for="email"> e-mail</label>
<input id="email" name="email" type="text">
<button onclick="EventMailing();null">OK</button>
</fieldset>
</div>
订阅时事通讯
一些文本
电子邮件
好啊
桌面的Html代码:
<div id="newsletterPopup" >
<a class="close icon-button-close" href="#"></a>
<h2>Suscribe to Newsletter</h2>
<p>some text</p>
<fieldset>
<label for="email"> e-mail</label>
<input id="emailp" name="email" type="text">
<button onclick="EventMailing();null">OK</button>
</fieldset>
</div>
订阅时事通讯
一些文本
电子邮件
好啊
我没有访问Html代码的权限,因此我正在尝试找出一个javascript解决方案。由于您要使用的元素是所单击按钮的前一个同级元素,只需使用触发事件的
按钮的属性,即可获得正确的引用,而无需使用id
。但是,像onclick
一样,有几个原因,其中一个原因是这个
绑定并不总是正确绑定的。相反,请使用现代的.addEventListener()
正如您所发现的,使用id
s会创建不易扩展的脆弱代码。虽然一开始它们很容易使用。当您开发更复杂的代码时,您会发现它们导致的问题比解决的问题还要多。有许多其他方法可以使用相对导航或基于CSS查询定位正确的元素,这是您应该使用的
document.querySelector(“按钮”).addEventListener(“单击”,事件邮寄);
函数EventMailing(){
var email=this.previousElementSibling;
console.log(email.value);
}
订阅时事通讯
一些文本
电子邮件
好啊
为什么不将id设置为相同的?您将根据id选择元素电子邮件
,然后检查是否找到它。因此,在该检查中,只需为您的pc版本编写第二个检查<代码>如果(电子邮件==未定义| |电子邮件==“”)返回代码>在这里,而不是return
只需获取pc版本,如果找不到,也只需返回您是否可以编辑HTML
?或者你只是在寻找一个JavaScript
解决方案?@iota,id必须是唯一的。一个没有身份证明的身份证明什么都没有。这是在HTML规范中。@isherwood的问题是,手机和桌面使用不同的HTML,主容器使用不同的ID。问题是我无法编辑HTML代码,因为我没有访问权限。@ruizwau谁有访问权限,因为它过时了,不应该这样写。甚至的标签也不正确,因为的应该引用元素的id
,而不是它的名称(这是它过去的工作方式)。