gpt4 book ai didi

javascript - 无法删除子节点而不使子节点(消息)根本不显示

转载 作者:行者123 更新时间:2023-11-28 09:35:02 25 4
gpt4 key购买 nike

我已经尝试了很多不同的方法来删除 child ,但没有任何效果,在某种程度上,要么我没有消息,要么我不断收到仅添加到跨度而不删除其他消息的消息

尝试阅读如何删除 child ,并尝试了我发现的各种不同的方法来删除它,我的代码在创建 child 和附加它等方面可能是错误的,因为这是我第一次使用这种方式。一直在尝试使用 while 循环来删除,以及代码中已经注释掉的循环和firstChild。并用不同的名称代替 msg。

我的脚本中的代码如下所示:

function validateName(input, id)
{
var res = true;
var msg = document.getElementById(id);
var error = document.createElement("span");
var errorMsg = "";

if (input == "" || input < 2) {
res = false;
// removeChildren(msg);
errorMsg = document.createTextNode("Input is to short!");
error.appendChild(errorMsg);
id.appendChild(error);
}
if (input >= 2 && input.match(/\d/)) {
res = false;
// removeChildren(msg);
errorMsg = document.createTextNode("Name contains a number!");
error.appendChild(errorMsg);
id.appendChild(error);
}
if (input >= 2 && !input.match(/\d/)) {
res = true;
// removeChildren(msg);
}
return res;
}

我的小测试页面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script src="Validator.js"></script>
<script>
function v1(e,id) {
if(validateName(document.form1.namefield.value, id) == false) {
document.getElementById("be").src="NotOkSmall.jpg";
}
if(validateName(document.form1.namefield.value) == true) {
document.getElementById("be").src="OkSmall.jpg";
}
}
</script>
</head>
<body>
<h1>Validation testing, HO!</h1>
<form name="form1" action="submit">
<div id="div1">
<input type="text" name ="namefield" id="f1" onkeydown="v1(be, div1)" >
<image id="be" src="NotOkSmall.jpg" alt="OkSmall.jpg" />
</div>
<input type="button" value="GO" onClick="v1(be)">
</form>
</body>
</html>

如果有人有任何想法让它发挥作用,我会是一个非常高兴的人:),正如我之前所说,我什至不确定在这种情况下创建 child 是正确的方式。但当我删除removeChildren时它会起作用,它确实会写入正确的消息,只是不要删除其中任何一个。所以必须有一些东西起作用..

谢谢。

最佳答案

您的代码中有一些错误,例如 id.appendChild(error);,您必须使用 msg.appendChild(error);。无论如何,我认为在这种情况下不需要附加/删除子节点。只需使用隐藏的错误占位符并在您想要显示错误消息时显示它即可。

HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP Page</title>
<script src="Validator.js"></script>
<script>
function v1(imgId) {
var img = document.getElementById(imgId),
val = document.form1.namefield.value;
img.src = img.alt = validateName(val)
? "OkSmall.jpg"
: "NotOkSmall.jpg";
}
</script>
</head>
<body>
<h1>Validation testing, HO!</h1>
<form name="form1" action="submit">
<div id="div1">
<input type="text" name ="namefield" id="f1" onkeyup="v1('be');" >
<image id="be" src="NotOkSmall.jpg" alt="NotOkSmall.jpg" />
<span id="error-message" class="invis"></span>
</div>
<input type="button" value="GO" onClick="v1('be');">
</form>
</body>
</html>​​​​​​​​​

CSS:

​.invis {
display: none;
}​

JavaScript:

function validateName(input) {
var res = true,
errorMsg,
errorContainer = document.getElementById('error-message');

if(input.length < 2) {
res = false;
errorMsg = "Input is to short!";
}

if(input.length >= 2 && /\d/.test(input)) {
res = false;
errorMsg = "Name contains a number!";
}

if(res) {
errorContainer.style.display = 'none';
} else {
errorContainer.innerHTML = errorMsg;
errorContainer.style.display = 'inline';
}

return res;
}​

<强> DEMO

关于javascript - 无法删除子节点而不使子节点(消息)根本不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com