为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript ReplaceChild 不显示消息

Javascript ReplaceChild 不显示消息

holdtom 2023-10-10 16:28:10
我有这个代码 <!DOCTYPE html>        <html>        <head>        <script>        function insertAfter(newNode, referenceNode) {            referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);        }                        function writeMess(node, mess){            elementEx= document.getElementsByTagName("br").length;            if(elementEx < 5){                newerrmess = document.createTextNode(mess);                node.replaceChild(newerrmess, node.firstChild);                br = document.createElement("br");                insertAfter(br, node);            }        }                        function Add(){            try{                        writeMess(nodoMessErr1, "");                var capsule = parseInt(nodoCapsule.value);                        /* Check correct values */                if(!isNaN(capsule)){                    totcapsule = capsule;                }                else{                /* Err Mess */                writeMess(nodoMessErr1, "Error Mess 1");                return;              }            }               catch( e ){                alert("Aggiunta " + e);                return;            }        }                   var nodoAdd;        var nodoCapsule;        var nodoMessErr1;        var totcapsule;                        /* Core function */        function gestoreLoad(){                   }            catch(e){                alert("gestoreLoad " + e);            }        }函数 writeMess 充当消息(文本节点)的“编写器”,将其附加为 span 的子级,并在 span 后放置一个“< br >”看看“Add”函数,我的程序的工作原理就像当用户将 NaN 值放入“nodoCapsule.value”中时显示一条错误消息(默认“”)来提醒他。我尝试按下按钮(id =“Aggiunta”)并在其中写入 NaN 值,但没有显示任何消息(仅创建了“ < br > ”,但前面没有文本)不知道为什么,有什么解决办法吗?编辑 - 这取决于浏览器,其他浏览器向我显示错误消息,但继续创建“<br>”。当显示错误消息时,我只想显示一个“< br >”。没有消息,也没有 br 没有显示消息。
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

你只需要检查是否已经有一个br标签


您可以通过以下方式检查


if (node.nextElementSibling.tagName.toLowerCase() !== "br") {

     // add br

}

工作示例


function insertAfter(newNode, referenceNode) {

    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);

}



function writeMess(node, mess){

    elementEx= document.getElementsByTagName("br").length;

    if(elementEx < 5){

        newerrmess = document.createTextNode(mess);

        node.replaceChild(newerrmess, node.firstChild);

        if (node.nextElementSibling.tagName.toLowerCase() !== 'br') {

            br = document.createElement("br");

            insertAfter(br, node);

        }

    }

}



function Add(){

    try{

        debugger;

        writeMess(nodoMessErr1, "");

        var capsule = parseInt(nodoCapsule.value);


        /* Check correct values */

        if(!isNaN(capsule)){

            totcapsule = capsule;

        }

        else{

        /* Err Mess */

        writeMess(nodoMessErr1, "Error Mess 1");

        return;

      }

    }   

    catch( e ){

        alert("Aggiunta " + e);

        return;

    }

}   


var nodoAdd;

var nodoCapsule;

var nodoMessErr1;

var totcapsule;



/* Core function */

function gestoreLoad(){

debugger;

try{


    nodoAdd = document.getElementById("aggiunta");

    nodoCapsule= document.getElementById("capsule");

    nodoMessErr1 = document.getElementById("adderr");



    nodoAdd.onclick = Add;

    nodoCapsule.value = "";


    var TextNodeErr_1= document.createTextNode("");

    nodoMessErr1.appendChild(TextNodeErr_1);



    }

    catch(e){

        alert("gestoreLoad " + e);

    }

}




window.onload = gestoreLoad;

<body>

            <span id="adderr"></span>

            

            <input type="text" id="capsule" /> 

            <input type="button" id="aggiunta" value="Add"/> 

            

        

        

        </body>


查看完整回答
反对 回复 2023-10-10
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信