我的输入占位符属性替代代码是否可以在例如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>
页面加载后,这将自动循环考虑表单中的所有输入字段并将值设置为占位符文本,但前提是浏览器不支持输入占位符属性并且尚未设置该值.
我创建了以下 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>
页面加载后,这将自动循环考虑表单中的所有输入字段并将值设置为占位符文本,但前提是浏览器不支持输入占位符属性并且尚未设置该值.