Я работаю над проектом веб-сайта, и меня озадачивает этот факт. После запуска javascript всегда возвращает false для любого значения. Чтобы упростить его, я написал простой код и поместил его сюда, чтобы вы могли видеть, что происходит.
Я считаю, что если я помещу все коды css и javascript в файл html, эта проблема больше не повторится.
https://jsfiddle.net/0m2L7f1u/
HTML
<html>
<head>
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<link rel = "stylesheet" href = "style.css">
</head>
<body>
<p id = "test">This is an example</p>
<button type = "button" id = "myButton">Click</button>
<script src = "main.js"></script>
</body>
</html>
CSS
#test{
display: block;
color: blue;
}
JS
document.getElementById("myButton").addEventListener("click", toggleMe);
function toggleMe(){
alert(document.getElementById("test").style.display == "block");
alert(document.getElementById("test").style.color == "blue");
}
Не могли бы вы рассказать мне, как мы можем успешно загрузить все данные CSS в Javascript?
Объект style на узле элемента показывает только стили напрямую, закодированные в HTML для этого элемента. Стили, подразумеваемые правилами CSS, должны быть получены через getComputedStyle() (и я думаю, что что-то похожее, но другое в старых версиях IE).
@Gingercook, ваша проблема похожа на следующий поток Как получить значения стиля HTML-элемента в javascript?
Спасибо всем, это действительно помогло :). Я поднял всех вас, кто поделился своими знаниями.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вот грязное решение, которое я приготовил вместе, используя множество разных ответов на похожие вопросы, которые я видел здесь ...
Это решение преобразует значение RGB в шестнадцатеричное значение и имя цвета в шестнадцатеричное значение, затем сравнивает шестнадцатеричные значения, ничего страшного. Может быть, немного беспорядочно, но эй, это работает!
Вам нужно сделать что-то похожий для этого просто потому, что использование getComputedStyle вернет rgb(0, 0, 255) и, конечно, сравнение этого со строкой blue просто не сработает. Поэтому вам нужен способ конвертировать оба значения, чтобы их можно было сравнивать, то есть blue находится в факт, равном rgb(0, 0, 255), но, конечно, JavaScript не узнает это автоматически ...
document.getElementById("myButton").addEventListener("click", toggleMe);
var rgbToHex = function(rgb) {
var hexDigits = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
//Function to convert rgb color to hex format
function rgb2hex(rgb) {
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}
function hex(x) {
return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
}
return rgb2hex(rgb);
};
function colourNameToHex(colour) {
var colours = {
"aliceblue": "#f0f8ff",
"antiquewhite": "#faebd7",
"aqua": "#00ffff",
"aquamarine": "#7fffd4",
"azure": "#f0ffff",
"beige": "#f5f5dc",
"bisque": "#ffe4c4",
"black": "#000000",
"blanchedalmond": "#ffebcd",
"blue": "#0000ff",
"blueviolet": "#8a2be2",
"brown": "#a52a2a",
"burlywood": "#deb887",
"cadetblue": "#5f9ea0",
"chartreuse": "#7fff00",
"chocolate": "#d2691e",
"coral": "#ff7f50",
"cornflowerblue": "#6495ed",
"cornsilk": "#fff8dc",
"crimson": "#dc143c",
"cyan": "#00ffff",
"darkblue": "#00008b",
"darkcyan": "#008b8b",
"darkgoldenrod": "#b8860b",
"darkgray": "#a9a9a9",
"darkgreen": "#006400",
"darkkhaki": "#bdb76b",
"darkmagenta": "#8b008b",
"darkolivegreen": "#556b2f",
"darkorange": "#ff8c00",
"darkorchid": "#9932cc",
"darkred": "#8b0000",
"darksalmon": "#e9967a",
"darkseagreen": "#8fbc8f",
"darkslateblue": "#483d8b",
"darkslategray": "#2f4f4f",
"darkturquoise": "#00ced1",
"darkviolet": "#9400d3",
"deeppink": "#ff1493",
"deepskyblue": "#00bfff",
"dimgray": "#696969",
"dodgerblue": "#1e90ff",
"firebrick": "#b22222",
"floralwhite": "#fffaf0",
"forestgreen": "#228b22",
"fuchsia": "#ff00ff",
"gainsboro": "#dcdcdc",
"ghostwhite": "#f8f8ff",
"gold": "#ffd700",
"goldenrod": "#daa520",
"gray": "#808080",
"green": "#008000",
"greenyellow": "#adff2f",
"honeydew": "#f0fff0",
"hotpink": "#ff69b4",
"indianred ": "#cd5c5c",
"indigo": "#4b0082",
"ivory": "#fffff0",
"khaki": "#f0e68c",
"lavender": "#e6e6fa",
"lavenderblush": "#fff0f5",
"lawngreen": "#7cfc00",
"lemonchiffon": "#fffacd",
"lightblue": "#add8e6",
"lightcoral": "#f08080",
"lightcyan": "#e0ffff",
"lightgoldenrodyellow": "#fafad2",
"lightgrey": "#d3d3d3",
"lightgreen": "#90ee90",
"lightpink": "#ffb6c1",
"lightsalmon": "#ffa07a",
"lightseagreen": "#20b2aa",
"lightskyblue": "#87cefa",
"lightslategray": "#778899",
"lightsteelblue": "#b0c4de",
"lightyellow": "#ffffe0",
"lime": "#00ff00",
"limegreen": "#32cd32",
"linen": "#faf0e6",
"magenta": "#ff00ff",
"maroon": "#800000",
"mediumaquamarine": "#66cdaa",
"mediumblue": "#0000cd",
"mediumorchid": "#ba55d3",
"mediumpurple": "#9370d8",
"mediumseagreen": "#3cb371",
"mediumslateblue": "#7b68ee",
"mediumspringgreen": "#00fa9a",
"mediumturquoise": "#48d1cc",
"mediumvioletred": "#c71585",
"midnightblue": "#191970",
"mintcream": "#f5fffa",
"mistyrose": "#ffe4e1",
"moccasin": "#ffe4b5",
"navajowhite": "#ffdead",
"navy": "#000080",
"oldlace": "#fdf5e6",
"olive": "#808000",
"olivedrab": "#6b8e23",
"orange": "#ffa500",
"orangered": "#ff4500",
"orchid": "#da70d6",
"palegoldenrod": "#eee8aa",
"palegreen": "#98fb98",
"paleturquoise": "#afeeee",
"palevioletred": "#d87093",
"papayawhip": "#ffefd5",
"peachpuff": "#ffdab9",
"peru": "#cd853f",
"pink": "#ffc0cb",
"plum": "#dda0dd",
"powderblue": "#b0e0e6",
"purple": "#800080",
"rebeccapurple": "#663399",
"red": "#ff0000",
"rosybrown": "#bc8f8f",
"royalblue": "#4169e1",
"saddlebrown": "#8b4513",
"salmon": "#fa8072",
"sandybrown": "#f4a460",
"seagreen": "#2e8b57",
"seashell": "#fff5ee",
"sienna": "#a0522d",
"silver": "#c0c0c0",
"skyblue": "#87ceeb",
"slateblue": "#6a5acd",
"slategray": "#708090",
"snow": "#fffafa",
"springgreen": "#00ff7f",
"steelblue": "#4682b4",
"tan": "#d2b48c",
"teal": "#008080",
"thistle": "#d8bfd8",
"tomato": "#ff6347",
"turquoise": "#40e0d0",
"violet": "#ee82ee",
"wheat": "#f5deb3",
"white": "#ffffff",
"whitesmoke": "#f5f5f5",
"yellow": "#ffff00",
"yellowgreen": "#9acd32"
};
if (typeof colours[colour.toLowerCase()] != 'undefined')
return colours[colour.toLowerCase()];
return false;
}
function toggleMe() {
alert(getComputedStyle(document.getElementById("test")).display == "block");
alert(rgbToHex(getComputedStyle(document.getElementById("test")).color) == colourNameToHex("blue"));
console.info(rgbToHex(getComputedStyle(document.getElementById("test")).color));
console.info(colourNameToHex("blue"));
}#test {
display: block;
color: blue;
}<!DOCTYPE html>
<html>
<head>
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<link rel = "stylesheet" href = "style.css">
</head>
<body>
<p id = "test">This is an example</p>
<button type = "button" id = "myButton">Click</button>
<script src = "main.js"></script>
</body>
</html>
Вы пробовали
getComputedStyle? Редактировать Единственная проблема с этим подходом заключается в том, что вам нужно будет проверять значение rgb, а не имя цвета.