有谁知道这两种方法之间有什么区别: String.slice String.substring
我正在构build一个需要在某些情况下显示确认对话框的应用程序。 比方说,我想删除的东西,然后我会派遣一个像deleteSomething(id)的行动,所以一些减速器会捕获该事件,并将填充对话框减速器,以显示它。 当这个对话框提交时,我怀疑。 该组件如何根据第一个动作派发适当的动作? 行动创造者应该处理这个逻辑吗? 我们可以在减速器内添加动作吗? 编辑: 使其更清晰: deleteThingA(id) => show dialog with Questions => deleteThingARemotely(id) createThingB(id) => Show dialog with Questions => createThingBRemotely(id) 所以我试图重用对话框组件。 显示/隐藏对话框不是问题,因为这可以很容易地在减速器中完成。 我想指定的是如何根据在左侧开始stream动的动作从右侧分配动作。
我正在构build一个分析工具,我目前可以从其用户代理获取用户的IP地址,浏览器和操作系统。 我想知道是否有可能不使用cookie或本地存储检测同一用户? 我不期待在这里的代码示例; 只是一个简单的提示,在哪里看得更远。 忘了提及,如果它是相同的计算机/设备,它将需要跨浏览器兼容。 基本上我是在设备识别之后不是真正的用户。
我经常看到这样检查未定义参数的JavaScript代码: if (typeof input !== "undefined") { // do stuff } 这看起来很浪费,因为它涉及到一个types查询和一个string比较,更不用说冗长了。 这是需要的,因为'undefined'可以被重命名。 我的问题是:该代码如何比这种方法更好: if (null != input) { // do stuff } 据我所知,你不能重新定义null,所以它不会意外中断。 而且,由于!=运算符的types强制,这将检查undefined和null …这通常正是你想要的(例如对于可选的函数参数)。 然而,这种forms似乎并不普遍,甚至导致JSLint使用邪恶的!=运算符来大吼你。 为什么这被认为是不好的风格?
我一直在困惑什么时候使用这两种parsing方法。 在回应我的json_encoded数据并通过ajax取回之后,我经常会对使用JSON.stringify和JSON.parse的时候感到困惑。 我的console.log在parsing时得到了[object,object] ,而在string化时得到了一个JavaScript对象。 $.ajax({ url: "demo_test.txt", success: function(data) { console.log(JSON.stringify(data)) /* OR */ console.log(JSON.parse(data)) //this is what I am unsure about? } });
通常情况下,如果我们只使用alert(object); 它会显示为[object Object] 。 如何在JavaScript中打印一个对象的所有内容参数?
我使用HTML5来编写游戏; 我现在碰到的障碍是如何播放音效。 具体要求很less: 播放和混合多种声音, 多次播放相同的样本,可能会重叠播放, 在任何时候中断播放样本, 最好播放包含(低质量)原始PCM的WAV文件,但我当然可以转换这些文件。 我的第一个方法是使用HTML5 <audio>元素,并在我的页面中定义所有的声音效果。 Firefox播放WAV文件只是桃色,但多次调用#play不会真正播放样本多次。 从我对HTML5规范的理解中, <audio>元素也跟踪回放状态,所以这就解释了原因。 我的直接想法是克隆audio元素,所以我创build了下面的小JavaScript库来为我做(取决于jQuery): var Snd = { init: function() { $("audio").each(function() { var src = this.getAttribute('src'); if (src.substring(0, 4) !== "snd/") { return; } // Cut out the basename (strip directory and extension) var name = src.substring(4, src.length – 4); // Create the helper function, […]
在JavaScript中定义枚举的首选语法是什么? 就像是: my.namespace.ColorEnum = { RED : 0, GREEN : 1, BLUE : 2 } // later on if(currentColor == my.namespace.ColorEnum.RED) { // whatever } 还是有更好的成语?
如何在jqgrid中保存当前行的代码 用于保存jqgrid状态。 它使用列号保存jqgrid列状态。 如果jqgrid colmodel在服务器中更改,这会导致在浏览器中的JavaScript错误。 在JQGrid注释中冻结rownum列和https://github.com/free-jqgrid/jqGrid/blob/master/README49.md描述方法remapColumnsByName 。 我希望使用这个修复问题。 免费的jqgrid是从今天的git master下载的。 在调整列大小或移动行后状态保存 saveColumnState.call($grid, $grid[0].p.remapColumns); 被改为 saveColumnState.call($grid, $grid[0].p.remapColumnsByName); 并在loadComplete代码中恢复状态 if (isColState && myColumnsState.permutation.length > 0 && myColumnsState.permutation.length === cm.length) { $grid.jqGrid("remapColumns", myColumnsState.permutation, true); } 同 if (isColState && myColumnsState.permutation.length > 0 && myColumnsState.permutation.length === cm.length) { $grid.jqGrid("remapColumnsByName", myColumnsState.permutation, true); } 现在行 if (isColState && myColumnsState.permutation.length > 0 […]
我完全坚持这一点,我试图逃避JSP中的单引号。 我有一些数据,我直接输出到JSstring和单引号似乎是造成问题。 这是我的代码: <dsp:droplet name="/atg/dynamo/droplet/ForEach"> <dsp:param value="${CommerceItems}" name="array" /> <dsp:param name="elementName" value="CommerceItem" /> <dsp:oparam name="outputStart"> var itemNameList =' </dsp:oparam> <dsp:oparam name="output"> <dsp:getvalueof id="Desc" param="CommerceItem.auxiliaryData.productRef.displayName"> ${fn:replace(Desc, "'", "\\/'")} </dsp:getvalueof> </dsp:oparam> <dsp:oparam name="outputEnd">';</dsp:oparam> </dsp:droplet> 这里是我得到的输出: var itemNameList =' Weyland Estate Santa Barbara Pinot Noir Raymond \/'Prodigal\/' North Coast Cabernet Sauvignon Chateau Haute Tuque'; 但这是错误的,我只需要/'Prodigal'/或者根本没有单引号! 编辑 :或者我实际上需要用\反斜杠转义引号?