鉴于此HTML和CSS:
span {
display:inline-block;
width:100px;
background-color:palevioletred;
}Run Code Online (Sandbox Code Playgroud)
<p>
<span> Foo </span>
<span> Bar </span>
</p>Run Code Online (Sandbox Code Playgroud)
结果,SPAN元件之间将存在4像素宽的空间.
演示: http ://jsfiddle.net/dGHFV/
我理解为什么会发生这种情况,而且我也知道我可以通过删除HTML源代码中SPAN元素之间的空白来摆脱那个空间,如下所示:
<p>
<span> Foo </span><span> Bar </span>
</p>
Run Code Online (Sandbox Code Playgroud)
但是,我希望CSS解决方案不要求HTML源代码被篡改.
我知道如何用JavaScript解决这个问题 - 通过从容器元素(段落)中删除文本节点,如下所示:
// jQuery
$('p').contents().filter(function() { return this.nodeType === 3; }).remove();
Run Code Online (Sandbox Code Playgroud)
演示: http ://jsfiddle.net/dGHFV/1/
但是这个问题可以单独用CSS解决吗?
的XMLHttpRequest的2级标准(还是工作草案)定义FormData的接口.此接口允许将File对象附加到XHR请求(Ajax请求).
顺便说一句,这是一个新功能 - 在过去,使用了"隐藏iframe技巧"(在我的另一个问题中阅读).
这就是它的工作原理(例子):
var xhr = new XMLHttpRequest(),
fd = new FormData();
fd.append( 'file', input.files[0] );
xhr.open( 'POST', 'http://example.com/script.php', true );
xhr.onreadystatechange = handler;
xhr.send( fd );
Run Code Online (Sandbox Code Playgroud)
where input是一个<input type="file">字段,handler是Ajax请求的成功处理程序.
这在所有浏览器中都很漂亮(除了IE之外).
现在,我想使这个功能与jQuery一起使用.我试过这个:
var fd = new FormData();
fd.append( 'file', input.files[0] );
$.post( 'http://example.com/script.php', fd, handler );
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用(抛出"非法调用"错误 - 截图在这里).我假设jQuery需要一个表示form-field-names/values的简单键值对象,而FormData我传入的实例显然是不兼容的.
现在,由于可以将FormData实例传入xhr.send(),我希望它也可以使它与jQuery一起使用.
更新:
我在jQuery的Bug Tracker上创建了一个"功能票".它在这里:http://bugs.jquery.com/ticket/9995
我被建议使用"Ajax prefilter"...... …
如何附加此HTML字符串
var str = '<p>Just some <span>text</span> here</p>';
Run Code Online (Sandbox Code Playgroud)
使用'test'DOM中的ID进行DIV ?
(顺便说一下div.innerHTML += str;是不可接受的.)
在JavaScript中,我们有几种获取对象属性的方法,具体取决于我们想要获得的内容.
1)Object.keys(),它返回一个对象的所有自己的可枚举属性,一个ECMA5方法.
2)一个for...in循环,它返回一个对象的所有可枚举属性,无论它们是自己的属性,还是从原型链继承.
3)Object.getOwnPropertyNames(obj)返回对象的所有属性,可枚举与否.
我们也有这样的方法hasOwnProperty(prop)让我们检查属性是继承还是实际属于该对象,propertyIsEnumerable(prop)顾名思义,它让我们检查属性是否可枚举.
有了所有这些选项,就无法获得对象的不可枚举的非自有属性,这就是我想要做的.有没有办法做到这一点?换句话说,我可以以某种方式获取继承的非可枚举属性的列表吗?
谢谢.
后者是否只是引用由自定义构造函数创建的非原始函数对象(例如,var bird1 = new Bird();)?
当我们有一个包含空格字符的字符串时:
var str = ' A B C D EF ';
Run Code Online (Sandbox Code Playgroud)
我们想从字符串中删除空格(我们想要这个:) 'ABCDEF'.
这两个:
str.replace(/\s/g, '')
Run Code Online (Sandbox Code Playgroud)
还有这个:
str.replace(/\s+/g, '')
Run Code Online (Sandbox Code Playgroud)
将返回正确的结果.
这是否意味着+在这种情况下这是多余的?在这种情况下,这两个正则表达式之间是否存在差异(例如,它们是否会以任何方式产生不同的结果)?
更新:性能比较 - /\s+/g更快.见这里:http://jsperf.com/s-vs-s
JavaScript程序由语句和函数声明组成.执行JavaScript程序时,会执行以下两个步骤:
扫描代码以查找函数声明和每个函数.声明是"执行"(通过创建一个函数对象),并创建一个对该函数的命名引用(以便可以在语句中调用此函数)
语句按顺序执行(评估)(因为它们出现在代码中)
因此,这很好用:
<script>
foo();
function foo() {
return;
}
</script>
Run Code Online (Sandbox Code Playgroud)
虽然"foo"函数在声明之前被调用,但它起作用,因为函数声明在语句之前被计算.
但是,这不起作用:
<script>
foo();
</script>
<script>
function foo() {
return;
}
</script>
Run Code Online (Sandbox Code Playgroud)
抛出ReferenceError("foo未定义").这导致得出结论,Web页面的HTML代码中的每个SCRIPT元素代表一个单独的JavaScript程序,并且每次HTML解析器遇到SCRIPT元素时,它都会执行该元素内的程序(然后一旦程序执行,解析器转到SCRIPT元素后面的HTML代码.
然后,这确实有效:
<script>
function foo() {
return;
}
</script>
<script>
foo();
</script>
Run Code Online (Sandbox Code Playgroud)
我的理解是Global对象(在全局执行上下文中充当Variable对象)始终存在(并保持),因此第一个JavaScript程序将创建函数对象并为其创建引用,然后第二个JavaScript程序将使用该引用来调用该函数.因此,所有JavaScript程序(在单个Web页面中)"使用"相同的Global对象,并且随后运行的所有JavaScript程序都可以观察到一个JavaScript程序对Global对象所做的所有更改.
现在,请注意这个......
<script>
// assuming that foo is not defined
foo();
alert(1);
</script>
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,警报调用将不会执行,因为"foo()"语句抛出一个ReferenceError(它打破了整个JavaScript程序),因此,所有后续语句都不会执行.
但是,在这种情况下......
<script>
// assuming that foo is not defined
foo();
</script>
<script>
alert(1);
</script>
Run Code Online (Sandbox Code Playgroud)
现在,警报调用确实已执行.第一个JavaScript程序抛出一个ReferenceError(并因此中断),但第二个JavaScript程序正常运行.当然,浏览器会报告错误(尽管它在错误发生后确实执行了后续的JavaScript程序).
现在,我的结论是:
请事实查看这篇文章并告诉我是否有错误. …
"旧"HTML/XHTML标准具有为其定义的DTD(文档类型定义):
HTML 4.01 http://www.w3.org/TR/html401/sgml/dtd.html
XHTML 1.0 http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict
此DTD指定嵌套元素的规则 - "哪些类型的元素可能出现在哪些类型的元素中".我在这里为XHTML 1.0制作了一个图表(抱歉,我不再拥有该资源)
我想用新版本更新该图表,该版本还包括新的HTML5元素.但是,似乎没有HTML5 DTD.似乎嵌套规则是由HTML5中定义的各种内容模型定义的.
所以没有DTD,对吗?
后续问题: HTML5中是否有没有DTD的原因?DTD是为所有不同类型的元素定义嵌套规则的一种很好的方法.他们为什么不包括这样的东西?
更新:我发现了这个: http: //www.w3.org/TR/html5/dom.html#kinds-of-content我猜,这是最接近DTD的.
更新: Visual Studio团队为XHTML5制作了XML Schema.我想这回答了我的问题: http: //blogs.msdn.com/b/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio-2008-and -视觉,网络developer.aspx
给定一个对象obj,我想定义一个只读属性'prop'并将其值设置为val.这是正确的方法吗?
Object.defineProperty( obj, 'prop', {
get: function () {
return val;
}
});
Run Code Online (Sandbox Code Playgroud)
结果应该是(for val = 'test'):
obj.prop; // 'test'
obj.prop = 'changed';
obj.prop; // still 'test' since it's read-only
Run Code Online (Sandbox Code Playgroud)
这个方法
很有用:http://jsfiddle.net/GHMjN/
我只是不确定这是否是最简单/最顺利/最合适的方式...
首先,这里是W3C标准定义的事件类型列表.(此列表基于HTML5标准中定义的onevent属性.我假设有许多其他事件类型,但此列表足够长.)