Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相同的Javascript函数适用于两个不同的div_Javascript_Html - Fatal编程技术网

相同的Javascript函数适用于两个不同的div

相同的Javascript函数适用于两个不同的div,javascript,html,Javascript,Html,我已经在移动设备上使用了这个javascript函数,我需要在桌面上使用它,但是元素的ID不一样,我想知道是否有人可以给我一个如何处理这个问题的提示 function EventMailing() { var email = document.querySelector("#newsletter-popup fieldset #email").value; if (email == undefined) { email = "";

我已经在移动设备上使用了这个javascript函数,我需要在桌面上使用它,但是元素的ID不一样,我想知道是否有人可以给我一个如何处理这个问题的提示

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
,而不是它的
名称(这是它过去的工作方式)。