Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript获取父元素id(Chrome OS)_Javascript_Html - Fatal编程技术网

使用javascript获取父元素id(Chrome OS)

使用javascript获取父元素id(Chrome OS),javascript,html,Javascript,Html,好的,这次我将非常具体 curAcc = 0; newItemInfo = null; newItemId = null; removeButtonId = null; function addAccount(method, account) { curAcc = curAcc + 1; if (method == "new") { newItemId = "a" + curAcc; removeButtonId = "ra" + curAcc + "btn";

好的,这次我将非常具体

curAcc = 0;
newItemInfo = null;
newItemId = null;
removeButtonId = null;

function addAccount(method, account) {
  curAcc = curAcc + 1;
  if (method == "new") {
    newItemId = "a" + curAcc;
    removeButtonId = "ra" + curAcc + "btn";

    newItemInfo = {
      Website: websiteIn.value,
      Username: usernameIn.value,
      Password: passwordIn.value,
      Id: newItemId,
      RemoveButton: {Id: removeButtonId}
    };
  } else if (method == "load") {}
  console.log(newItemInfo);

  newItem = document.createElement("li");
  newItem.innerHTML =
    "<li><label><b>Website:</b></label> <input type='text' value='" + 
      newItemInfo.Website + "' id='a" + curAcc + "ws'></li>" +
    "<li><label><b>Username:</b></label> <input type='text' value='" + 
      newItemInfo.Username + "' id='a" + curAcc + "un'></li>" +
    "<li><label><b>Password:</b></label> <input type='text' value='" + 
      newItemInfo.Password + "' id='a" + curAcc + "pw'></li>" +
    "<li><button id='" + newItemInfo.RemoveButton.Id + "'>Remove</button>
      </li>" +
    "<br/><br/>";
   newItem.setAttribute("id", newItemId);
   accountList.appendChild(newItem);

   removeButton = document.getElementById(removeButtonId);
   removeButton.addEventListener("click", function(event) {
   console.log("Button ID:" + this.id);
 });
curAcc=0;
newItemInfo=null;
newItemId=null;
removeButtonId=null;
函数addAccount(方法、帐户){
curAcc=curAcc+1;
如果(方法==“新建”){
newItemId=“a”+curAcc;
removeButtonId=“ra”+curAcc+“btn”;
newItemInfo={
网站:websiteIn.value,
用户名:usernameIn.value,
密码:passwordIn.value,
Id:newItemId,
RemoveButton:{Id:removeButtonId}
};
}如果(方法==“加载”){}
console.log(newItemInfo);
newItem=document.createElement(“li”);
newItem.innerHTML=
“
  • 网站:
  • ”+ “
  • 用户名:
  • ”+ “
  • 密码:
  • ”+ “
  • 删除
  • ”+ “

    ”; setAttribute(“id”,newItemId); accountList.appendChild(newItem); removeButton=document.getElementById(removeButtonId); removeButton.addEventListener(“单击”),函数(事件){ 日志(“按钮ID:+this.ID”); });
    }

    删除按钮以及列表项是使用.innerHTML创建的。 我尝试使用accountList.removeChild(document.getElementById(newItemId));
    它工作了,但是它只删除了最近创建的列表项,并且在第一次使用后没有删除任何其他内容。有人能告诉我如何使用addEventListener获得remove按钮以从列表中删除newItem吗?

    一旦在函数中创建元素且函数结束,Javascript将失去作用域

    您可以通过将此作用域绑定到eXnet来传递它。通过使用
    .bind(this)
    标识符绑定到函数来传递该标识符。然后可以使用
    target
    选择器调用元素

    通过使用
    event.target
    选择器,您可以使用该按钮。该(
    parentNode
    )的父节点是列表项本身。它的父级是实际列表。我猜您想从列表中删除li项。不仅仅是li项中的按钮

    我将代码编写得更为扩展,使其更为明显

    var list=document.getElementById(“list”);//列表元素
    addButton=document.getElementById(“btnAdd”);//添加按钮
    addButton.addEventListener(“单击”,函数(){
    var newButton=document.createElement(“按钮”);//创建一个新按钮
    var btnText=document.createTextNode(“删除”);//创建按钮的文本
    appendChild(btnText);//将文本添加到按钮
    addEventListener(“单击”,函数(事件){//为按钮创建单击侦听器
    var elButton=event.target;//单击的按钮
    var elLi=elButton.parentNode;//按钮所在的
  • 元素 removeChild(elLi);//从列表中删除
  • 元素 }.bind(this));//绑定this,使“event”参数成为单击的按钮 var newItem=document.createElement(“li”);//创建一个新的
  • 元素 appendChild(newButton);//将按钮添加到该元素 appendChild(newItem);//将
  • 元素添加到列表中 });
    • 项目1
    • 项目2
    • 项目3

    添加
    这不是我想要的。我需要删除一个包含多个列表项的列表项。这段代码只删除了按钮
  • Remove
  • 您不能从这个答案中推断出来吗?只需添加另一个级别的lis,然后再上一个parentNode。。。。stackoverflow的目的是为编码人员提供工具来解决他们的问题,推动他们朝着正确的方向前进。而不是简单地编写代码。我已经编辑了代码,因为我认为你的意思是问题应该是。但是老实说,我们可以用100种不同的方式来写它“恰到好处”。如果这个问题的答案令人满意,你能把它标为“已回答”吗。