我有元素E,我正在添加一些元素.突然之间,我发现下一个元素应该是E的第一个孩子.诀窍是什么,怎么做?方法unshift不起作用,因为E是一个对象,而不是数组.
很长的路要走迭代E的孩子并移动'em键++,但我确信有一个更漂亮的方式.
是否有一个null-safe属性访问(空传播/存在)操作者在ES6(ES2015/JavaScript.next /和谐)等?.中的CoffeeScript例如?或者是否计划用于ES7?
var aThing = getSomething()
...
aThing = possiblyNull?.thing
Run Code Online (Sandbox Code Playgroud)
这将大致如下:
if (possiblyNull != null) aThing = possiblyNull.thing
Run Code Online (Sandbox Code Playgroud)
理想情况下,解决方案不应该分配(甚至undefined)到aThing如果possiblyNull是null
我试图在js中使用insertBefore,如下所示:
var p = document.createElement("p");
p.innerHTML = "test1";
document.body.insertBefore(p, null);
var p = document.createElement("p");
p.innerHTML = "test2";
document.body.insertBefore(p, null);
Run Code Online (Sandbox Code Playgroud)
但是这会在body标签关闭之前添加最后一个p元素,我怎么能使用它以便在打开时添加到顶部?所以添加的最后一个元素将是body标签内的第一个元素.
我试过了:
document.body.insertBefore(p, document.getElementsByTagName('body')[0]);
Run Code Online (Sandbox Code Playgroud)
但是萤火虫表明:
找不到节点"代码:"8
某个变量可能包含相对路径或绝对路径.无论哪种方式,我需要能够从变量中提取文件名:
http://www.somesite.com/dir1/dir2/filename.gif
/dir1/dir2/filename.gif
Run Code Online (Sandbox Code Playgroud)
目录结构也是任意的.所以基本上给出了上面的url(使用arbirtrary目录结构)我需要拉'filename.gif'.提前致谢
我用javascript库制作一个网站.如果用户在下拉列表(选择)框中选择一个选项,则必须添加标签和文本框.这是我使用appendChild选项.appenChild选项的唯一问题是始终在used元素中的项之后添加项.这是我的代码:
var newFreeformLabel = document.createElement('label');
newFreeformLabel.innerHTML = 'Omschrijving:';
var newFreeformField = document.createElement('input');
newFreeformField.className = 'textfield';
newFreeformField.name = 'factuur_orderregel[]';
var newFreeformSpacer = document.createElement('div');
newFreeformSpacer.className = 'spacer';
container.appendChild(newFreeformLabel);
container.appendChild(newFreeformField);
container.appendChild(newFreeformSpacer);
Run Code Online (Sandbox Code Playgroud)
这里容器是必须添加项目的元素.唯一的问题是项目被添加到元素的末尾,我想在html元素的开头添加项目.
我很想念jQuery.我正在开展一个项目,我需要再次使用优质的纯粹Javascript弄脏手.
我有这种情况:
parent
child1
child2
child3
Run Code Online (Sandbox Code Playgroud)
通过javascript,我希望能够在任何这些孩子之前或之后插入一个新节点.虽然javascript有insertBefore,但没有insertAfter.
之前插入可以正常工作以在其中任何一个之前插入一个节点:
parent.insertBefore(newNode, child3)
Run Code Online (Sandbox Code Playgroud)
但是如何在child3之后插入一个节点?我现在正在使用它:
for (i=0,i<myNodes.length,i++){
myParent.insertBefore(newNode, myNodes[i+1])
}
Run Code Online (Sandbox Code Playgroud)
那就是在我的每个节点的下一个兄弟节点之前插入我的newNode(意味着它将它放在每个节点之后).
当它到达最后一个节点时,myNodes[i+1]变为undefined我现在正在尝试访问不存在的数组索引.
我认为'错误了,但似乎工作得很好,在那种情况下,我的节点确实插在最后一个节点之后.
但那是对的吗?我现在正在几个现代浏览器中测试它,看起来没有看似不好的效果.有没有更好的办法?
我有一个问题,我可以将html标签替换为另一个吗?
但我不想让内容空白.像这样:
<a data-text="text">content</a>
Run Code Online (Sandbox Code Playgroud)
至
<div data-text="text">content</div>
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
假设我有这个:
<span id="foo">bar</span>
Run Code Online (Sandbox Code Playgroud)
我想用这个替换它:
bar
Run Code Online (Sandbox Code Playgroud)
换句话说,我想从DOM中删除span,并将其内容插入其位置.
我怎样才能实现这一点,尽可能使用代码?我想使用纯JavaScript,但jQuery也很好.
谢谢.
我正在使用此正则表达式尝试查找看起来像这样的链接,并仅用链接的开始和结束标记之间的内容替换它们.
正则表达式:
/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg
Run Code Online (Sandbox Code Playgroud)
我在示例代码上测试了正则表达式并且它可以工作,但是当我尝试将它应用于object.innerHTML时它不会替换任何东西.怎么了?
代码:
document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1');
document.write(document.getElementById(preview_div_ID).innerHTML);
Run Code Online (Sandbox Code Playgroud)
上面的"document.getElementById(preview_div_ID).innerHTML"中的一些示例html:
<h5 style="line-height: 9px; margin: 2px; ">
<span style="font-size: 7px; line-height: 8px; ">
Ost- (caseous) <a class="tag_link" href="javascript:;" onclick="open_tag('nekros', this);">nekros</a>
</span>
</h5>
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢
javascript ×9
dom ×4
jquery ×4
html ×3
regex ×2
arrays ×1
babeljs ×1
coffeescript ×1
ecmascript-6 ×1
elements ×1
hyperlink ×1
insert ×1
prototypejs ×1
replace ×1