如何在 javascript 的 IE 中隐藏空的 <span>。 (注意在其他浏览器中工作正常)
How to hide empty <span> in IE in javascript. (Note work fine in other browser)
我在 IE 中遇到了关于那段简单代码的问题。
我正在使用此代码在发生错误的字段下显示和隐藏错误消息。
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
if (!regex.test(field.value))
{
document.getElementById(id).innerHTML= msg;
return false;
}
else
{
document.getElementById(id).innerHTML= "";
return true;
}
}
跨度看起来像这样
<SPAN ID="field.error" CLASS="regred"></SPAN>
此代码在 chrome 和 Firefox 中工作正常,但验证后的 IE 运行 它显示一个大的空块。
我试过了display:none
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
if (!regex.test(field.value))
{
document.getElementById(id).innerHTML= msg;
document.getElementById(id).style.display = 'inline-block';
return false;
}
else
{
document.getElementById(id).innerHTML= "";
document.getElementById(id).style.display = 'none';
return true;
}
}
跨度块仍然存在。
我试过删除 span
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
if (!regex.test(field.value))
{
document.getElementById(id).innerHTML= msg;
return false;
}
else
{
document.getElementById(id).innerHTML= "";
//IE shenanigan
var parentNode = document.getElementById(id).parentNode;
parentNode.removeChild(document.getElementById(id));
return true;
}
}
但是在其他浏览器中它隐藏了预期的跨度仍然显示。
为什么?
您可以将其置于视口之外而不是隐藏。
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
var el = document.getElementById(id);
if (!regex.test(field.value))
{
el.innerHTML= msg;
el.style.display = 'inline-block';
el.style.position = 'static';
el.style.left = '0px';
return false;
}
else
{
el.innerHTML= "";
el.style.position = 'absolute';
el.style.left = '-10000px';
return true;
}
}
我在 IE 中遇到了关于那段简单代码的问题。 我正在使用此代码在发生错误的字段下显示和隐藏错误消息。
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
if (!regex.test(field.value))
{
document.getElementById(id).innerHTML= msg;
return false;
}
else
{
document.getElementById(id).innerHTML= "";
return true;
}
}
跨度看起来像这样
<SPAN ID="field.error" CLASS="regred"></SPAN>
此代码在 chrome 和 Firefox 中工作正常,但验证后的 IE 运行 它显示一个大的空块。
我试过了display:none
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
if (!regex.test(field.value))
{
document.getElementById(id).innerHTML= msg;
document.getElementById(id).style.display = 'inline-block';
return false;
}
else
{
document.getElementById(id).innerHTML= "";
document.getElementById(id).style.display = 'none';
return true;
}
}
跨度块仍然存在。
我试过删除 span
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
if (!regex.test(field.value))
{
document.getElementById(id).innerHTML= msg;
return false;
}
else
{
document.getElementById(id).innerHTML= "";
//IE shenanigan
var parentNode = document.getElementById(id).parentNode;
parentNode.removeChild(document.getElementById(id));
return true;
}
}
但是在其他浏览器中它隐藏了预期的跨度仍然显示。
为什么?
您可以将其置于视口之外而不是隐藏。
function validateStuff(field, msg)
{
var regex=/^\d{1,7}$/;
var id= field.name + ".error";
var el = document.getElementById(id);
if (!regex.test(field.value))
{
el.innerHTML= msg;
el.style.display = 'inline-block';
el.style.position = 'static';
el.style.left = '0px';
return false;
}
else
{
el.innerHTML= "";
el.style.position = 'absolute';
el.style.left = '-10000px';
return true;
}
}