あなたの質問のコードは少し混乱しているように見えるので、あなたがやろうとしていることの例を挙げます。
最初の考慮事項は、HTML、Javascript、および CSS の混合についてです。
HTMLでonClick()を使用するのが悪い習慣なのはなぜですか?
邪魔にならない Javascript
インライン スタイルとクラス
インライン コンテンツを削除し、これらを適切なファイルに分割します。
次に、「クリック」イベントと「変更」イベントのディスプローゼについて説明します。両方が必要かどうかが明確ではないためです。
関数changeBackground
は背景色とテキスト色の両方を同じ値に設定します (テキストは表示されません)。そのため、DOM で 2 回検索する必要がないため、色の値をキャッシュしています。
CSS
#TheForm {
margin-left: 396px;
}
#submitColor {
margin-left: 48px;
margin-top: 5px;
}
HTML
<form id="TheForm">
<input id="color" type="text" />
<br/>
<input id="submitColor" value="Submit" type="button" />
</form>
<span id="coltext">This text should have the same color as you put in the text box</span>
Javascript
function changeBackground() {
var color = document.getElementById("color").value; // cached
// The working function for changing background color.
document.bgColor = color;
// The code I'd like to use for changing the text simultaneously - however it does not work.
document.getElementById("coltext").style.color = color;
}
document.getElementById("submitColor").addEventListener("click", changeBackground, false);
jsfiddleについて
出典: w3schools
色の値
CSS の色は、赤、緑、青の色の値 (RGB) の組み合わせを表す 16 進数 (hex) 表記を使用して定義されます。光源の 1 つに指定できる最小値は 0 (16 進数 00) です。最大値は 255 (16 進数の FF) です。
16 進値は、# 記号で始まる 3 つの 2 桁の数字として書き込まれます。
更新:@Ianが指摘したように
16 進数の長さは 3 文字または 6 文字です
出典: W3C
色の数値
16 進表記の RGB 値の形式は、「#」の直後に 3 つまたは 6 つの 16 進文字が続く形式です。3 桁の RGB 表記 (#rgb) は、ゼロを追加するのではなく、数字を複製することによって 6 桁の形式 (#rrggbb) に変換されます。たとえば、#fb0 は #ffbb00 に展開されます。これにより、短い表記法 (#fff) で白 (#ffffff) を指定できるようになり、ディスプレイの色深度への依存がなくなります。
入力が有効な CSS Hex Color であることを確認する代替関数を次に示します。テキストの色のみを設定するか、有効でない場合はアラートをスローします。
正規表現のテストには、このパターンを使用します
/^#(?:[0-9a-f]{3}){1,2}$/i
ただし、正規表現マッチングで数値をグループに分割したい場合は、別のパターンが必要になります
function changeBackground() {
var color = document.getElementById("color").value.trim(),
rxValidHex = /^#(?:[0-9a-f]{3}){1,2}$/i;
if (rxValidHex.test(color)) {
document.getElementById("coltext").style.color = color;
} else {
alert("Invalid CSS Hex Color");
}
}
document.getElementById("submitColor").addEventListener("click", changeBackground, false);
jsfiddleについて
これは、名前と 16 進数による色を許可するさらなる変更です。
function changeBackground() {
var names = ["AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenRod", "DarkGray", "DarkGrey", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "Darkorange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue", "DarkSlateGray", "DarkSlateGrey", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray", "DimGrey", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "GoldenRod", "Gray", "Grey", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGray", "LightGrey", "LightGreen", "LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSlateGrey", "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine", "MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "SlateGrey", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen"],
color = document.getElementById("color").value.trim(),
rxValidHex = /^#(?:[0-9a-f]{3}){1,2}$/i,
formattedName = color.charAt(0).toUpperCase() + color.slice(1).toLowerCase();
if (names.indexOf(formattedName) !== -1 || rxValidHex.test(color)) {
document.getElementById("coltext").style.color = color;
} else {
alert("Invalid CSS Color");
}
}
document.getElementById("submitColor").addEventListener("click", changeBackground, false);
jsfiddleについて