相关疑难解决方法(0)

使用模板字符串附加 HTML

es6 的新手,有没有办法在 DOM 中使用模板文字 `` 附加 HTML 而不会覆盖当前发布的内容?

我有一大块 HTML 需要为正在创建的列表发布。用户可以在哪里发布他们的输入。

每次提交任务时,它都会覆盖当前提交。我需要它附加在下面。

小提琴用于演示目的。

https://jsfiddle.net/uw1o5hyr/5/

 <div class = main-content> 

 <form class ='new-items-create'>

 <label>Name:</label><input placeholder=" A Name" id="name">


 <button class = "subBtn">Submit</button>

 </form>


 </div>

  <span class="new-name"></span>


JavaScript

form.addEventListener('submit',addItem);

 function addItem(event){
 event.preventDefault();
 let htmlStuff = 
    ` 
     <div class="main">
    <div class="a name">
     <span>${name.value}</span>
    </div>
    <div>
    `

   itemCreated.innerHTML = htmlStuff;


   }
Run Code Online (Sandbox Code Playgroud)

javascript dom

6
推荐指数
1
解决办法
4263
查看次数

为什么我会失去对元素的引用?

我偶然发现了一些奇怪的东西(至少对我来说)。案例如下:

我从 DOM 中选择一个元素child1并将其保存到变量中。我继续向child1的父元素Parent1添加一个新元素。现在,如果我尝试修改child1上的某些值,它不会注册更改。似乎引用已经消失,它仅指较早的副本。

示例
child1 = inputField
Parent1 = 容器

function start() {
    var inputField = document.querySelector('#inputField');
    // Works if addSomething() is commented out.
    addSomething();
    console.log(inputField);
    doSomething(inputField);
}

function addSomething() {
    var container = document.querySelector('#container');
    container.innerHTML += '<div class="something"></div>'
}

function doSomething(el) {
    el.value = 'Some random input';
}

start();
Run Code Online (Sandbox Code Playgroud)

小提琴示例

http://jsfiddle.net/mdTkZ/

对不起,如果这是非常基本的问题或者之前已经被问过的问题。我尝试用谷歌搜索,但没有找到任何与我使用的搜索词相关的内容。A

javascript

3
推荐指数
1
解决办法
1603
查看次数

更改innerHTML属性时处理程序会发生什么

好吧,我想说

<div id="container"/>
Run Code Online (Sandbox Code Playgroud)

然后我在这个容器中放了一个id ="button"的按钮.然后我为它做了.click处理程序

$("#button").click(function() {
foo();
}
Run Code Online (Sandbox Code Playgroud)

然后我像这样改变div的innerHTML:

$("#container").html = "<h1> Foo </h1>";
Run Code Online (Sandbox Code Playgroud)

然后我设置计时器让我们说5秒后,执行以下代码:

function(){
$("#container").html = "<button id="button" type="button">Click Meh!</button>"
$("#button").click(function() {
foo();
}
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:第一个按钮被"破坏"了,第一个.click()处理程序也被销毁了吗?或者第二个.click()只会为同一个按钮创建第二个处理程序,如果我想$("#button").off("click")在调用第二个.click()之前只需要一个处理程序?

html javascript jquery

3
推荐指数
1
解决办法
107
查看次数

是否存在子节点的有效范围?

我创建了一个'p'节点并将其附加到'body'.
接下来,我更改了节点的样式并将其从"body"中删除.它奏效了.
但是当我在改变'body.innerHTML'后做同样的事情时,它没有用.

控制台说,

未捕获的NotFoundError:无法在"节点"上执行"removeChild":要删除的节点不是此节点的子节点.

为什么会这样?

<p><button onclick="func1()">Result 1</button></p>
<script>
	function func1() {
		var body = document.body;
		var p = document.createElement('p');
		p.id = 'p1';
		p.innerHTML = 'Icons made by <a href="http://www.freepik.com" title="Freepik">Freepik</a> from <a href="http://www.flaticon.com" title="Flaticon">www.flaticon.com</a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a>';
		body.appendChild(p);
		p.style.color = '#0055aa';
		p.style.backgroundColor = '#ffaa00';
    
		// body.removeChild(p); // It works.
		body.innerHTML += '<p>' + p.innerHTML + '</p>';
		body.removeChild(p); // It doesn't work.
  }
</script>
Run Code Online (Sandbox Code Playgroud)

javascript

3
推荐指数
1
解决办法
48
查看次数

为什么addEventListener在ES6中工作一次?

我不明白为什么addEventListener工作一次?

let input = document.querySelector(".send");
let i = 0;

input.addEventListener('click',(e)=>{
   e.preventDefault();
   i+=1;
   document.body.innerHTML += i;
});
Run Code Online (Sandbox Code Playgroud)
<input type="submit" class="send">
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

3
推荐指数
1
解决办法
63
查看次数

JavaScript onclick 函数只工作一次(非常简单的代码)

我知道有很多关于此的主题,但它们解决了一些可变问题。我的要简单得多,但它不起作用。只工作一次。

var bt1;
document.addEventListener('DOMContentLoaded', load);

function load() {
  document.body.innerHTML += '<div>welcome</div>';
  bt1 = document.getElementById('bt1');
  bt1.onclick = clicked;
}

function clicked() {
  document.body.innerHTML += '<div>welcome</div>';
}
Run Code Online (Sandbox Code Playgroud)
<body>
  <button id="bt1">Click me</button>
</body>
Run Code Online (Sandbox Code Playgroud)

我尝试将clicked函数放入和取出onclick语句(如其他一些主题所建议的那样)。

我还尝试移动bt1变量声明(并且根本不使用变量)。

html javascript onclick onclicklistener

2
推荐指数
1
解决办法
4388
查看次数

附加新元素后,JavaScript无效

使用JavaScript追加新元素时遇到问题.我不使用任何库,如jQuery或其他任何东西,我在使用本机JavaScript时这样做.

好的,我正在尝试在<body>标签上添加一个新元素.如果在jQuery中你可以使用该.append()函数,但是在使用本机JavaScript时你必须使用.innerHTML.

这是我的HTML代码

<button id="add">
Add
</button>
Run Code Online (Sandbox Code Playgroud)

这是我的JavaScript代码

document.getElementById("add").addEventListener("click", (e) => {
  document.getElementsByTagName("body")[0].innerHTML += '<p>Hello world</p>';
});
Run Code Online (Sandbox Code Playgroud)

当我点击"添加"按钮时,它第一次工作.但是,当我再次点击它不起作用.当我尝试使用jQuery追加新元素然后它工作,有没有更少?

html javascript

1
推荐指数
1
解决办法
1031
查看次数

Event?Target?.add?Event?Listener() 在innerHTML 后不起作用

我动态创建了一个具有EventListener的复选框。不幸的是,如果我使用以下内容更改复选框标签的文本,则 EventListener 不起作用innerHTML

let label = document.createElement('label'),
    input = document.createElement('input');
input.setAttribute('type', 'checkbox');
input.addEventListener('change', () => alert('Change Detected'));

label.appendChild(input);
document.body.appendChild(label);
label.innerHTML += 'Select Me!';
Run Code Online (Sandbox Code Playgroud)

我怎样才能规避这个问题,为什么它甚至存在?

这是一个没有的工作片段innerHTML

let label = document.createElement('label'),
    input = document.createElement('input');
input.setAttribute('type', 'checkbox');
input.addEventListener('change', () => alert('Change Detected'));

label.appendChild(input);
document.body.appendChild(label);
Run Code Online (Sandbox Code Playgroud)

html javascript innerhtml event-listener addeventlistener

1
推荐指数
1
解决办法
611
查看次数

元素innerHTML摆脱了事件监听器

我有一个向页面添加按钮的功能.

var count = 0;

function createOnclickFunction(number)
{
    return function()
    {
        alert("This is button number " + number);
    }
}

function addButton(data)
{
    var newbutton = "..." //creates string from data

    var element = document.getElementById("mydiv");
    var children = element.children;

    element.innerHTML = newbutton + element.innerHTML;

    var currentCount = count;
    children[0].onclick = createOnclickFunction(currentCount)

    count++;
}
Run Code Online (Sandbox Code Playgroud)

它基本上根据一些数据在html中创建一个按钮.

每次我添加一个按钮,我希望它被添加到div的开头#mydiv,并且由于newbutton也不是Element,但是a String,我必须修改innerHtml以将其添加到开头#mydiv.

之后,我必须通过获取第一个孩子来获取元素(添加onclick)#mydiv.

但是,在我的页面添加第二个按钮后,第一个按钮onclick不再有效.

如果我修改我的代码只添加一个按钮,一切正常.

现在,只需单击顶部按钮(最新添加的按钮)即可.

我怎样才能解决这个问题?

我也试过用element.firstChild而不是element.children[0].

在此先感谢大家!

编辑:

这是一个jsfiddle :(你可以看到唯一有效的按钮是stackoverflow …

html javascript onclick nodelist

0
推荐指数
1
解决办法
1551
查看次数