我暂时坚持看似简单的JavaScript问题,但也许我只是错过了正确的搜索关键字!
假设我们有一个对象
var r = { a:1, b: {b1:11, b2: 99}};
Run Code Online (Sandbox Code Playgroud)
有几种方法可以访问99:
r.b.b2
r['b']['b2']
Run Code Online (Sandbox Code Playgroud)
我想要的是能够定义一个字符串
var s = "b.b2";
Run Code Online (Sandbox Code Playgroud)
然后使用访问99
r.s or r[s] //(which of course won't work)
Run Code Online (Sandbox Code Playgroud)
一种方法是为它编写一个函数,在字符串上拆分字符串,也可以递归/迭代地获取属性.但是有更简单/更有效的方法吗?在这里的任何jQuery API中有用吗?
我每天都会看到问题,询问如何从某些HTML字符串中解析或提取某些内容,第一个答案/注释始终是"不要使用RegEx解析HTML,以免感到愤怒!" (有时省略最后一部分).
这对我来说相当混乱,我一直认为,解析任何复杂字符串的最佳方法是使用正则表达式.那么HTML解析器如何工作呢?它不使用正则表达式来解析.
使用正则表达式的一个特殊参数是,并不总是有一种解析替代方法(例如JavaScript,其中DOMDocument不是普遍可用的选项).例如,jQuery似乎可以使用正则表达式将HTML字符串转换为DOM节点.
不知道是否CW这个,这是一个真正的问题,我想要回答,而不是真正想成为一个讨论主题.
是否有可能删除哈希window.location而不会导致页面跳转到顶部?我需要能够修改哈希而不会引起任何跳转.
我有这个:
$('<a href="#123">').text('link').click(function(e) {
e.preventDefault();
window.location.hash = this.hash;
}).appendTo('body');
$('<a href="#">').text('unlink').click(function(e) {
e.preventDefault();
window.location.hash = '';
}).appendTo('body');
Run Code Online (Sandbox Code Playgroud)
在这里查看实例:http://jsbin.com/asobi
当用户单击" 链接 "时,修改的哈希标记没有任何页面跳转,因此工作正常.
但是当用户点击" 取消链接 "时,删除了has标记,页面滚动跳转到顶部.我需要删除没有这种副作用的哈希.
我有两个HH:MM:SS格式的时间字符串.例如,str1contains 10:20:45, str2contains 5:10:10.
如何比较上述值?
我正在尝试加载用户通过元素选择的图像.
我在输入元素中添加了一个onchange事件处理程序,如下所示:
<input type="file" name="picField" id="picField" size="24" onchange="preview_2(this);" alt=""/>
Run Code Online (Sandbox Code Playgroud)
而preview_2函数是:
var outImage ="imagenFondo";
function preview_2(what){
globalPic = new Image();
globalPic.onload = function() {
document.getElementById(outImage).src = globalPic.src;
}
globalPic.src=what.value;
}
Run Code Online (Sandbox Code Playgroud)
其中outImage具有我想要加载新图片的标签的id值.
但是,似乎onload永远不会发生,并且它不会向html加载任何内容.
我该怎么办?
我希望能够使用javascript在页面上找到某种类型的东西.问题如下:我需要检查特定区域是否是复选框/单选按钮/或文本字段.
如果它是一个复选框或单选按钮,它没有长度(没有字符串),否则如果它是一个文本字段我需要检查它是否包含字符.页面是动态创建的,因此有时可能会在文本字段中显示复选框.
所以我的想法是找到输入的类型,然后确定要做什么.
任何建议,将不胜感激.
提前致谢.
.htc和.js文件有什么区别?我们能否将任何.htc文件转换为.js文件?
问题是如果我们使用htc来进行png修复,那么我们将htc添加到css文件中
body { behavior: url("csshover3.htc"); }
Run Code Online (Sandbox Code Playgroud)
但是这不是W3C有效的,所以想要将.htc转换为.js然后用作js文件来附加,这样它就会对W3C有效.
任何人都可以告诉我如何转换和使用任何.htc文件作为JavaScript文件?
这是我一直遇到的一些困难.我有一个本地客户端脚本,需要允许用户获取远程网页并搜索结果页面的表单.为了做到这一点(没有正则表达式),我需要将文档解析为完全可遍历的DOM对象.
我想强调的一些限制:
getElementsByTagName需要提供DOM API等.假设我在变量中有一个完整的HTML文档字符串(包括DOCTYPE声明)html,这是我到目前为止所尝试的:
var frag = document.createDocumentFragment(),
div = frag.appendChild(document.createElement("div"));
div.outerHTML = html;
//-> results in an empty fragment
div.insertAdjacentHTML("afterEnd", html);
//-> HTML is not added to the fragment
div.innerHTML = html;
//-> Error (expected, but I tried it anyway)
var doc = new ActiveXObject("htmlfile");
doc.write(html);
doc.close();
//-> JavaScript executes
Run Code Online (Sandbox Code Playgroud)
我也尝试从HTML中提取<head>和<body>节点,并将它们添加到<HTML>片段内的元素,仍然没有运气.
有没有人有任何想法?