Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   самопроизвольный перевод цвета из HEX в rgb (https://javascript.ru/forum/misc/76482-samoproizvolnyjj-perevod-cveta-iz-hex-v-rgb.html)

laimas 15.01.2019 17:14

Цитата:

Сообщение от TheOwl
Я наверное не смогу все объяснить

Как я понять проблемы. Если отправляется полученное из определенного в стиле цвета и сервер получает RGB, то какая проблема его конвертировать в HEX? Да и столь ли это необходимо?

TheOwl 15.01.2019 17:19

я так понял если значение стиля backgroundColor записать в input.value, то это значение из HEX автоматически конвертируется в rgb... правильно?

TheOwl 15.01.2019 17:20

это необходимо в рамках учебного проекта...
в input.value должен быть HEX

laimas 15.01.2019 17:32

Цитата:

Сообщение от TheOwl
я так понял если значение стиля backgroundColor записать в input.value, то это значение из HEX автоматически конвертируется в rgb... правильно?

Нет, это браузер помещает в style цвет в своем представлении, а не в том котором он задается. Если его получать у элемента и вставлять значением в поле, то оно и будет в RGB. Если же в поле записывать HEX, то оно никак не изменится на RGB.

Либо вставляйте непосредственно HEX значение в поле, если не возможно это, то конвертируйте RGB в HEX перед записью его в поле.

TheOwl 15.01.2019 17:33

спасибо, теперь понятно

Aetae 15.01.2019 18:14

Хранить все "настройки" отдельно, из настроек же брать для отправки.

TheOwl 15.01.2019 19:17

всем спасибо, вопрос решил...
использовал конверсию, кому нужно вот код...

(function () {
	window.convertColor = function (color, type) {
		if (type.toLowerCase() === 'hex') {
			const rgbToHex = rgb => "#" + ((1 << 24) + (Number(rgb.match(/\d{1,3}/gi)[0]) << 16) + (Number(rgb.match(/\d{1,3}/gi)[1]) << 8) + Number(rgb.match(/\d{1,3}/gi)[2])).toString(16).slice(1);
			return rgbToHex(color);
		}
		if (type.toLowerCase() === 'rgb') {
			const  hexToRgb = hex => `rgb(${(parseInt(hex.replace(/\#/gi,''), 16) >> 16) & 255},${(parseInt(hex.replace(/\#/gi,''), 16) >> 8) & 255},${(parseInt(hex.replace(/\#/gi,''), 16)) & 255})`;
			return hexToRgb(color);
		}
	}
})();


Часовой пояс GMT +3, время: 02:40.