2017-06-15 158 views
-1
var message = document.getElementById("es_msg_pg"); 
var videos = document.getElementById("x-section-2"); 

if (message.innerHTML.indexOf("Email Address already exists!") { 
    videos.style.display = "block"; 
} else { 
    videos.style.display = "none"; 
} 
} 

这似乎是非常直接的,但它不能在我的网站上工作。 有什么建议吗?如果其他Div包含文本,则隐藏Div?

这里是HTML我试图检查它是否包含文本电子邮件地址已存在!

<div class="es_msg" id="es_shortcode_msg"> 
<span id="es_msg_pg"></span> 
</div> 
+0

你有一个语法错误和逻辑错误。 if(message.innerHTML.indexOf(“Email Address already exists!”)' - >'if(message.innerHTML.indexOf(“Email Address already exists!”)> -1)' –

+0

你错过了一个右括号在你的'if'中,并且在最后有一个额外的右括号,试着修复它们,看它是否可用 – Osuwariboy

+0

[indexOf总是返回true for document.location](https://stackoverflow.com/questions/ 8929027/indexof-always-returns-true-for-document-location) – Nope

回答

1

indexOf返回一个数字。该数字是字符串在另一个字符串中的位置,从0开始。如果字符串不存在,则返回-1,其值为true。要比较的返回值是这样的:

if (message.innerHTML.indexOf("Email Address already exists!") >= 0) { ... } 
+0

非常感谢你Supr,这工作! –

+0

你如何循环? 现在的功能工作,但我需要循环它,所以一旦他们请输入一个em所有内容都会显示。现在它保持隐藏状态,因为在页面加载时,电子邮件字段中没有条目。 –

+0

你并不需要一个循环。您只需在电子邮件字段中的值更改时重新运行代码。你可以把所有的东西放在'function refreshDiv(){/ *你的代码在这里* /}'这样的函数中,然后每当email字段中的值改变时使用'refreshDiv();'调用该函数。 – Supr

0

您可以使用此

var message = document.getElementById("es_msg_pg"); 
 
var videos = document.getElementById("es_shortcode_msg"); 
 
console.log(message.innerHTML); 
 

 
// returns -1 if message doesnt contain your custom text 
 
if (message.innerHTML.indexOf("Email Address already exists!") == -1) 
 
{ 
 
    videos.style.display = "block"; 
 
} else 
 
{ 
 
    videos.style.display = "none"; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> 
 
<div class="es_msg" id="es_shortcode_msg"> 
 
<span id="es_msg_pg">Email Address already exists!</span> 
 
</div> 
 
<div>Hello</div>

+0

谢谢哈桑这个工作得很好! –

+0

欢迎您:)请考虑接受真正的答案,以帮助人们理解问题已经解决 – hasan

+0

我希望我可以,这是说我的名声太低... 你知道如何循环这个,所以一旦一个人放入脚本将通过电子邮件地址播放?现在它只有在手动输入到控制台日志中时才有效。 –

相关问题