-3

Is the if statement saying if placeholder is not in document.create(input)? Why is it using document.create.

<input type="text" placeholder="john Doe">
<input type="email">
<script>
if( !'placeholder' in document.createElement('input'){
    // do something
}
</script>
4

3 回答 3

2

它似乎正在尝试执行特征检测以确定对元素placeholder属性的支持,这是HTML5 的新特性。<input>

document.createElement('input')用于为测试创建未修改的元素<input>。并且in操作员测试该 DOM 元素上是否存在属性。

虽然,它并没有完全实现它似乎正在尝试的东西。将!在 之前起作用in,因此最终测试这些元素是否具有false属性,而它们没有。

它需要另一组括号来确保in首先评估 ,以便!可以否定它的条件结果。

if (!('placeholder' in document.createElement('input'))) {
    // `<input>` elements don't have `placeholder` properties
}

注意:它也缺少条件的)关闭if

于 2013-08-13T09:19:40.727 回答
1

如果您的代码在语法上正确,您的代码会检查浏览器是否对 HTML5 引入的占位符属性具有本机支持。

if 语句创建一个新的输入元素,然后检查新创建的元素是否具有占位符属性。如果有,则浏览器支持占位符属性。

一个语法正确的例子是:

if(!('placeholder' in document.createElement('input'))) {
    // This browser lack native support for the 
    // placeholder attribute, do something
}

示例:http: //jsfiddle.net/eAy3Y/

于 2013-08-13T09:19:20.893 回答
0

尝试 :

var input = document.createElement("input");
if(!('placeholder' in input)){
     input.setAttribute("placeholder", "Your place holder");
}

document.createElement创建一个新的属性节点,并返回它。

希望这对您有所帮助。

于 2013-08-13T09:28:14.637 回答