Tag: JavaScript

SVG / XML中有一些innerHTMLreplace吗?

在HTML中,我可以通过提供一个stringforms的模板来构build一个简单的模板系统,replace它的一些部分,然后使用innerHTML将其分配给某个容器。 var templ = '<span>{myText}</span>' var newContent = templ.replace( '{myText}', someVariable ); document.querySelector( '#myContainer' ).innerHTML = newContent; 这样我可以利用浏览器的HTMLparsing器,而不必重复使用document.createElement() 。 如果模板增长超过几个元素,后者可能非常麻烦。 然而,在SVG中,作为innerHTML的元素,甚至innerSVG都没有这个属性。 所以我的问题是: 有没有什么我可以在SVG中使用ro类似于上面的例子的方法,或者我坚持document.createElement() (或者respectivly一些使用它的lib)? 与我的问题一样:Vanilla JavaScript解决scheme是首选,但任何指向提供解决scheme的lib指针表示赞赏。

在jQuery中search和突出显示

我想使用jQuery / Java Script来search和突出显示文本。 示例HTML 1: <div id="div1"><b>Good</b> <b>Morning</b> </div> <div id="div2">Good Evening</div> <div id="div3">Good Morning</div>Searched String = "Good Morning" 当我searchstring“早上好”时,div1和div3中的内容应该突出显示。 即。 输出的html应该是 <div id="div1"><span class="highlight"><b>Good</b> <b>Morning</b> </span></div> <div id="div2">Good Evening</div> <div id="div3"><span class="highlight">Good Morning</span></div> 我已经使用插件https://raw.github.com/bartaz/sandbox.js/master/jquery.highlight.js将search到的内容包含在span中。 但只有div3被突出显示。 请帮忙。

在JavaScript中,我如何dynamic获取对象的嵌套属性

var arr = { foo : 1, bar: { baz : 2 }, bee : 3 } function getter(variable) { return arr[variable]; } 如果我想要'foo'和'bee',我只需要做arr[variable] – 这很简单,而且function就是这样。 但是,如果我想得到arr.bar.baz AKA arr[bar][baz] ? 我可以传递给getter函数,让我这样做(当然也让我使用相同的函数获得非嵌套的属性)。 我尝试了getter('bar.baz')和getter('[bar][baz]')但那些都不起作用。 我想我可以parsing点或括号(像这里: 在JavaScript中,testing属性深深嵌套在对象图? )。 有更清洁的方法吗? (除了eval当然。) 特别是因为我需要在一个数组元素的循环中正确地设置很多次。

有任何浏览器实现DOM3的EventListenerList?

答案在2010年3月没有回来: 浏览器EventListenerList实现 我想知道自那以后是否有进展。 如果答案仍然没有…什么时候任何浏览器可以支持它的迹象?

onbeforeunload支持检测

我想检查当前的浏览器是否支持onbeforeunload事件。 常见的JavaScript方式做到这一点似乎不工作: if (window.onbeforeunload) { alert('yes'); } else { alert('no'); } 实际上,它只是检查某个处理程序是否已经附加到事件中。 有没有办法检测是否支持onbeforeunload没有检测到特定的浏览器名称?

Angular.js。 如何计算满足自定义filter的ng-repeat迭代

这是我的代码: <div ng-show="?" ng-repeat="item in items | notEmpty"> </div> 过滤: Kb.filter("notEmpty", function(){ return function(input){ var output=[]; for(var i=0;i<input.length;i++){ if(input[i]){ output.push(input[i]); } } return output; }}); 我需要根据循环中过滤项目的数量显示/隐藏重复的s。 什么是最好的办法呢? 谢谢

Angular2 5分钟安装bug – require没有定义

我正在做Angular2 5分钟的快速入门 。 现在,大约一半的教程,我有以下文件正确设置: index.html的, app.component.ts 应用程序/ boot.ts 的package.json tconfig.json 冉npm start ,我得到这个错误: Uncaught ReferenceError: require is not defined(anonymous function) @ boot.js:1 angular2-polyfills.js:143 Uncaught TypeError: Cannot read property 'split' of undefinedreadMemberExpression @ system.src.js:1456(anonymous function) @ system.src.js:3224(anonymous function) @ system.src.js:3749complete @ system.src.js:2487run @ angular2-polyfills.js:138zoneBoundFn @ angular2-polyfills.js:111 我发现这个链接关于使用es6填充 ,我包括<script src="node_modules/es6-shim/es6-shim.js"></script> 。 不过,我仍然得到 Uncaught ReferenceError: require is not […]

通过嵌套的JavaScript对象迭代

我试图遍历一个嵌套的对象来检索一个string标识的特定对象。 在下面的示例对象中,标识符string是“label”属性。 我无法围绕如何遍历树来返回适当的对象。 任何帮助或build议将不胜感激。 var cars = { label: 'Autos', subs: [ { label: 'SUVs', subs: [] }, { label: 'Trucks', subs: [ { label: '2 Wheel Drive', subs: [] }, { label: '4 Wheel Drive', subs: [ { label: 'Ford', subs: [] }, { label: 'Chevrolet', subs: [] } ] } ] }, { […]

使用jQuery的多行string插入

$("#addSelect").click(function() { $("#optionsForm").after("Hello world."); } ); 这工作。 $("#addSelect").click(function() { $("#optionsForm").after("<tr> <td><input type="text" class="optionField" value="Options" /></td> <td> <ul class="option"> <li><select><option>Value..</option></select></li> </ul> </td> </tr>"); } ); 像这样的东西不。 在Chrome中,我收到错误“ Unexpected token ILLEGAL ”。 谷歌search后,我发现我的小脑不知道多lessJavaScript和多行。 所以我在每一行的末尾添加了'\'。 然而,我现在得到错误“ 意外的标识符 ”。 我想这不像我做的那样困难:)

在CSS加载后触发的jQuery事件?

我在我的页面上有几个链接(在一个<div id="theme-selector"> ),它允许你改变CSS样式表: $('#theme-selector a').click(function(){ var path = $(this).attr('href'); $('head link').remove(); $('head').append('<link type="text/css" href="'+path+'" rel="stylesheet" />'); return false; }); 现在,在改变页面的样式之后,我想使用下面的代码(在$('head').append call)之后得到新的背景颜色: var bgcolor = $('body').css('background-color'); alert(bgcolor); 问题是,我认为,浏览器下载新的样式表需要一些时间,而且我有时会在我的警报消息中获得旧的背景颜色。 是否有一些事件,我可以绑定,只会在页面上加载所有样式表后提醒我? 目前,我所能想到的是使用setTimeout(function(){}, 5000); 这不是很好,因为如果加载页面上的所有CSS需要更长/更短的时间。 让我知道如果我需要澄清任何事情,我可以提供更多的代码。