<label>
入力用の HTML5 プレースホルダー属性のような HTML 連絡先フォームで要素
を使用しようとしています。私は、次の機能を提供する再利用可能な関数として機能する次の JavaScript を作成しました。
- 入力を名前で検索します。
- 入力の値を取得します。
- 入力に属するラベルを見つけます。
- 入力の状態に応じてラベルのスタイルを変更します。
- 入力の値に応じて、ラベル スタイルを変更します。
ただし、機能していません。コンソールにエラーが表示されないため、理由がわかりません。私は何を間違っていますか?ここにコード付きのJS Fiddleがあります
function placeholder(field_name) {
// Get the input box with field_name
// Then get input value
var box = document.getElementsByName(field_name);
var i;
for (i = 0; i < box.length; i++) {
var value = document.getElementById(box[i].value);
}
// Get the labels belonging to each box using the HTML for attribute
var labels = document.getElementsByTagName('LABEL');
for (i = 0; i < labels.length; i++) {
if (labels[i].htmlFor !== '') {
var elem = document.getElementById(labels[i].htmlFor);
if (elem) {
box.label = labels[i];
}
}
}
// Colors
var focusColor = "#D5D5D5";
var blurColor = "#B3B3B3";
// If no text is in the box then show the label grey color
box.onblur = function () {
box.label.style.color = blurColor;
};
// If input focuses change label color to light grey
box.onfocus = function () {
box.label.style.color = focusColor;
};
// If there is text in the box then hide the label
if (box.value !== "") {
// Quick do something, hide!
box.label.style.color = "transparent";
}
}
// Call the function passing field names as parameters
placeholder(document.getElementsByName("email"));
placeholder(document.getElementsByName("firstName"));
placeholder(document.getElementsByName("lastName"));