相关疑难解决方法(0)

如何使用JavaScript将数据附加到div?

我正在使用AJAX将数据附加到div元素,我从JavaScript填充div,如何将新数据附加到div而不会丢失div中的先前数据?

javascript

388
推荐指数
8
解决办法
83万
查看次数

为什么在HTML中使用onClick()是一种不好的做法?

我曾多次听说过onClick()在HTML 中使用JavaScript事件是一种不好的做法,因为它对语义不利.我想知道缺点是什么以及如何修复以下代码?

<a href="#" onclick="popup('/map/', 300, 300, 'map'); return false;">link</a>
Run Code Online (Sandbox Code Playgroud)

html javascript

130
推荐指数
8
解决办法
10万
查看次数

为什么"element.innerHTML + ="代码不好?

我被告知不要使用element.innerHTML += ...这样的东西来附加东西:

var str = "<div>hello world</div>";
var elm = document.getElementById("targetID");

elm.innerHTML += str; //not a good idea?
Run Code Online (Sandbox Code Playgroud)

这有什么问题?我还有其他选择吗?

html javascript anti-patterns innerhtml

46
推荐指数
4
解决办法
3万
查看次数

深度克隆与innerHTML的设置:什么更快?

我正在尝试找出在浏览器中深度克隆DOM树的最高效方法.

如果我开始

var div = document.getElementById("source");
var markup = div.innerHTML;
Run Code Online (Sandbox Code Playgroud)

什么会更快,

var target = div.cloneNode(true);
Run Code Online (Sandbox Code Playgroud)

要么

var target = document.cloneNode(false);
target.innerHTML = markup;
Run Code Online (Sandbox Code Playgroud)

我知道浏览器平台可能会在这里产生很大的不同,因此任何关于如何在现实世界中进行比较的信息都将受到赞赏.

javascript dom dhtml

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

使用JS查找并替换文档中的特定文本字符

我想知道是否有一种轻量级方式我可以使用JavaScript或jQuery来嗅出文档中的特定文本字符; 说并找到这个角色的所有实例.然后!写一个用$替换所有实例的能力.

我找到了这个首发代码片段:

var str = 'test: &#39;';

str = str.replace(/&#39;/g, "'");
Run Code Online (Sandbox Code Playgroud)

实质上; 我想要一个单页文档的解决方案.抓住X的所有实例并使其成为XY.只有文字字符.

javascript jquery

24
推荐指数
5
解决办法
8万
查看次数

JavaScript:使用innerHTML或(很多)createElement调用来添加复杂的div结构会更好吗?

我正在研究一个问题,需要为一组~100个元素中的每个元素创建一个复杂的div块.

除了内容之外,每个单独的元素都是相同的,它们看起来(在HTML中)是这样的:

<div class="class0 class1 class3">
<div class="spacer"></div>
<div id="content">content</div>
<div class="spacer"></div>
<div id="content2">content2</div>
<div class="class4">content3</div>
<div class="spacer"></div>
<div id="footer">content3</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以:

1)innerHTML使用字符串连接创建所有元素以添加内容.

2)使用createElement,setAttributeappendChild创建和添加每个div.

选项1获取稍微小一点的文件可供下载,但选项2的渲染速度似乎稍快.

除了表演之外还有一个很好的理由通过一条路线或另一条路线?我应该测试的任何跨浏览器问题/性能问题?

...或者我应该尝试模板和克隆方法?

非常感谢.

javascript dom

23
推荐指数
4
解决办法
1万
查看次数

操作innerHTML会删除子元素的事件处理程序吗?

我有这个非常简单的演示:

function foo() {
    alert('Works!');
}

var inp = document.createElement('input');
inp.onblur = foo;
document.body.appendChild(inp);
Run Code Online (Sandbox Code Playgroud)

见这里: http ://jsfiddle.net/A7aPA/

如你所见,这是有效的.(单击输入,然后单击其他位置,将弹出警报.)

但是,如果我将此行添加到JavaScript代码中:

document.body.innerHTML += '<br>'; 
Run Code Online (Sandbox Code Playgroud)

然后模糊处理程序停止工作(并没有抛出错误顺便说一句).

见这里: http ://jsfiddle.net/A7aPA/1/

这是为什么?

javascript browser dom dom-events

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

createElement()与innerHTML何时使用?

我在sql表中有一些数据.我通过JSON将它发送到我的JavaScript.

从那里我需要将它组成HTML,以便通过2种方式之一向用户显示.

  • 通过编写html字符串并插入hold元素的.innerHTML属性
  • 通过对我需要的每个元素使用createElment()并直接附加到DOM中

以下两个问题都没有给出可量化的答案.

从第一个链接的第一个答案,第三个原因(前两个原因不适用于我的环境)

在某些情况下会更快

有人可以建立一个基础案例,当时createElement()方法更快,为什么?

通过这种方式,人们可以根据自己的环境做出有根据的猜测.

在我的情况下,我不担心保留现有的DOM结构或事件监听器.只是效率(速度).

我没有使用关于我提供的第二个链接的库.但它可以为那些人.


研究/链接

createElement优于innerHTML的优势?

JavaScript:使用innerHTML或(很多)createElement调用来添加复杂的div结构会更好吗?

javascript

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

在jQuery中将元素追加到body的顶部

现在Facebook要我把这个丑陋的div放在我页面的顶部 <body>

<div id="fb-root"></div>
Run Code Online (Sandbox Code Playgroud)

我希望避免这种情况,通过JavaScript附加它.

.append('<div id="fb-root"></div>');
Run Code Online (Sandbox Code Playgroud)

这将它放在页面的底部.

</head>
<body>
    <header>test</header>
    <div id="fb-root"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

我如何'追加'到顶部?

</head>
<body>
    <div id="fb-root"></div>
    <header>test</header>
</body>
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

为什么事件侦听器只在for循环中创建的最后一个元素上注册?

我正在使用JavaScript创建复选框,将onchange侦听器添加到它们并使用循环将它们添加到div.但是,只有最后一个复选框才会注册事件侦听器.

为什么会这样?

var div = document.getElementById("mydiv");
for (var i = 0; i < 5; i++) {
    div.innerHTML += ("<br>" + i);
    var input = document.createElement("input");
    input.type = "checkbox";
    input.onchange = function() {
      alert("foo");
    };
    div.appendChild(input);
}
Run Code Online (Sandbox Code Playgroud)
<div id="mydiv"></div>
Run Code Online (Sandbox Code Playgroud)

html javascript for-loop innerhtml event-handling

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