我的输入占位符属性替代代码是否可以在例如IE?

Will my code for input placeholder attribute alternative properly work in e.g. IE?

我创建了以下 Javascript 作为 browsers that don't support the input placeholder attribute 的替代输入占位符属性,就像旧版本的 Internet Explorer:

function placeholder_check(value1) {

if(document.getElementById(value1).getAttribute('value') == null || document.getElementById(value1).getAttribute('value') == '') {
    document.getElementById(value1).setAttribute('value', '');
}

if(document.createElement('input').placeholder == undefined) {

if(document.getElementById(value1).getAttribute('value') == '') {
    document.getElementById(value1).setAttribute('value', document.getElementById(value1).getAttribute('placeholder'));
}

}

}

此代码会将输入值设置为占位符值。但前提是浏览器不支持占位符属性。如果支持,将改用占位符属性。此代码也只会在未设置值属性时执行。

它很容易实现,因为你只需要为每个输入指定一个特定的 id 和一小块 Javascript 来调用这样的函数:onmouseover="placeholder_check(this.id);",例如:

<input id="input1" placeholder="plaseholder 1" onmouseover="placeholder_check(this.id);">

我稍微测试了一下这段代码,它似乎可以工作。由于我对Javascript不是很熟悉,我想知道我做的是否正确?或者,我有什么需要改进的地方吗?或者,某些无法在某些浏览器上运行的意外情况?

您可以使用 onload 事件加载该函数

<head>
<script>
function myFunction() {
  alert("Page is loaded");
}
</script>
</head>

<body onload="myFunction()">
<h1>Hello World!</h1>
</body>

感兴趣的朋友,这里是工作代码:

<!DOCTYPE html>
<html>
<head>
<script>
function placeholder_check(value1) {

if(document.getElementById(value1).getAttribute('value') == null || document.getElementById(value1).getAttribute('value') == '') {
    document.getElementById(value1).setAttribute('value', '');
}

if(document.createElement('input').placeholder !== undefined) {

if(document.getElementById(value1).getAttribute('value') == '') {
    document.getElementById(value1).setAttribute('value', document.getElementById(value1).getAttribute('placeholder'));
}

}

}

function placeholder_check_start() {
var elements = document.querySelectorAll("form input");

for (var i = 0, element; element = elements[i++];) {

if(element.id != null && element.id != '') {
    placeholder_check(element.id);
}

}
}
</script>
</head>
<body onload="placeholder_check_start();">

<form>
<input id="fff" placeholder="Input 1">
<input id="lll" placeholder="Input 2">
<input id="uuu" placeholder="Input 3">
</form>

</body>
</html>

页面加载后,这将自动循环考虑表单中的所有输入字段并将值设置为占位符文本,但前提是浏览器不支持输入占位符属性并且尚未设置该值.