Чтобы вывести стили из таблицы стилей, вам нужно использовать getComputedStyle
var input = document.querySelector('input');
// console.log(input.style.color); this is your original code which I have commented out as it seems to have confused you
// prints "", instead of "var(--text-color) or #666666".
console.log(rgbToHex(window.getComputedStyle(input).getPropertyValue('color')));
// this is the new code and prints #666666 as requested
function rgbToHex(color) {
color = ""+ color;
if (!color || color.indexOf("rgb") < 0) {
return;
}
if (color.charAt(0) == "#") {
return color;
}
var nums = /(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/i.exec(color),
r = parseInt(nums[2], 10).toString(16),
g = parseInt(nums[3], 10).toString(16),
b = parseInt(nums[4], 10).toString(16);
return "#"+ (
(r.length == 1 ? "0"+ r : r) +
(g.length == 1 ? "0"+ g : g) +
(b.length == 1 ? "0"+ b : b)
);
}
:root {
--text-color: #666666;
}
input {
color: var(--text-color);
}
<input type="submit" value="test">
Отсюда происходит преобразование rgb в шестнадцатеричные: RGB в шестнадцатеричные и шестнадцатеричные в RGB