Javascript 删除子脚本 html代码

Javascript 删除子脚本 html代码,javascript,html,Javascript,Html,当我第一次按下链接时,什么也没有发生,但当我按下两次时,它会删除a标记,我想在您第一次单击时,单击一下删除a标记。您删除了包含元素前面空格的文本节点。您需要确保传递给removeChild的参数是您实际需要的参数 这将是解决问题的更明智的方法: <li id="ioAddOtherRelation"> <a href="" onclick="return ioAddSetOtherRelation(this)" class="smallLink">add othe

当我第一次按下链接时,什么也没有发生,但当我按下两次时,它会删除a标记,我想在您第一次单击时,单击一下删除a标记。您删除了包含元素前面空格的文本节点。您需要确保传递给
removeChild
的参数是您实际需要的参数

这将是解决问题的更明智的方法:

<li id="ioAddOtherRelation">
    <a href="" onclick="return ioAddSetOtherRelation(this)" class="smallLink">add other relation</a>
</li>

function ioAddSetOtherRelation(element){
   var bigLi = element.parentNode;
    bigLi.removeChild(element);
    return false;
}
  • 函数ioAddSetOtherRelation(元素){ var bigLi=element.parentNode; 大理。removeChild(元素); 返回false; }

    去掉内部事件属性并进行写入会更好。

    第一次单击时,删除了包含元素前面空格的文本节点。您需要确保传递给
    removeChild
    的参数是您实际需要的参数

    这将是解决问题的更明智的方法:

    <li id="ioAddOtherRelation">
        <a href="" onclick="return ioAddSetOtherRelation(this)" class="smallLink">add other relation</a>
    </li>
    
    function ioAddSetOtherRelation(element){
       var bigLi = element.parentNode;
        bigLi.removeChild(element);
        return false;
    }
    
  • 函数ioAddSetOtherRelation(元素){ var bigLi=element.parentNode; 大理。removeChild(元素); 返回false; }

    去掉固有的事件属性并编写会更好。

    使用jQuery并将参数作为
    发送给this

    在IOAddSetOtherRelationship函数中取该


    选中它

    使用jQuery并将参数作为

    在IOAddSetOtherRelationship函数中取该


    检查它

    您发布的代码的问题在于,“li”元素的第一个子元素实际上是一个textNode,包含换行符以及自身与“a”元素之间的空格。第一次单击时,此不可见文本节点将被删除,第二次单击“a”时,此节点将被删除

    您可以通过删除换行符和空格来演示这一点(即,将所有HTML放在一行,不带空格)-您应该会看到“a”在第一次单击时消失

    我发现以下修改后的javascript按照您的预期工作。注意,我使用了.getElementsByTagName()来确保只返回“a”元素。这将返回一个类似.childNodes的数组,因此我将获取结果数组的第一个元素

              function ioAddSetOtherRelation() {
              var bigLi = document.getElementById('ioAddOtherRelation');
              bigLi.removeChild(bigLi.getElementsByTagName("a")[0]);
              return false;
          }
    

    我发现FireBug在解决这个问题上非常有用(与JS代码中的console.debug()行一起),如果您还没有使用它,我建议尝试一下

    您发布的代码的问题在于,“li”元素的第一个子元素实际上是一个textNode,包含换行符以及自身与“a”元素之间的空格。第一次单击时,此不可见文本节点将被删除,第二次单击“a”时,此节点将被删除

    您可以通过删除换行符和空格来演示这一点(即,将所有HTML放在一行,不带空格)-您应该会看到“a”在第一次单击时消失

    我发现以下修改后的javascript按照您的预期工作。注意,我使用了.getElementsByTagName()来确保只返回“a”元素。这将返回一个类似.childNodes的数组,因此我将获取结果数组的第一个元素

              function ioAddSetOtherRelation() {
              var bigLi = document.getElementById('ioAddOtherRelation');
              bigLi.removeChild(bigLi.getElementsByTagName("a")[0]);
              return false;
          }
    

    我发现FireBug在解决这个问题上非常有用(与JS代码中的console.debug()行一起),如果您还没有使用它,我建议尝试一下

    您是否尝试过将子元素设置为变量,然后使用remove()进行处理?是的,我尝试过,它是相同的。您是否尝试过将子元素设置为变量,然后使用remove()进行处理?是的,我尝试过,它是sameyes man,u是一个,它工作正常,非常感谢,我将在7分钟后接受答案是的man,u是一个,这很有效,非常感谢,我会在7分钟后接受答案我的问题总是用jQuery解决:)谢谢你我的问题总是用jQuery解决:)谢谢你正如昆汀和兰加纳德所说,将“a”元素本身作为参数传递是一种比我在上面发布的试图找到它更明智的方法。谢谢你,伙计,你让我理解了解决方案,它按照你说的那样工作,我接受你的答案,谢谢我的荣幸,谢谢你接受我的回答,让我的代表离开现场,这样我最终可以投票给其他人:-)正如昆汀和兰加纳德所指出的,将“a”元素本身作为参数传递比我在上面贴出的试图找到它要明智得多。谢谢你,伙计,你让我理解了解决方案,它按照你说的那样工作,我接受你的回答,谢谢你,我很高兴,谢谢你接受我的回答,并让我的代表离开现场,这样我最终可以投票给其他人:-)