Вот мой сценарий. Мне нравится моя цветовая гамма. У меня темно-синий фон со светло-серым текстом. У меня есть опция «Обычный текст» в VS 2010 в Инструменты | Опции | Окружающая среда | Шрифты и цвета должны быть темно-серыми для переднего плана и темно-синими для фона:
альтернативный текст http://www.elbalazo.net/post/vs_plaintext_color. jpg
Но мне нужно исправить эту серьезную проблему / раздражение, когда я выделяю какой-то текст, а затем теряю фокус мышкой, он становится почти полностью белым!
alt text http://www.elbalazo.net/post /WhiteBackgroundVS2.jpg
И что еще хуже, когда я нахожу указатель мыши на маленькие строки кода слева, выделение всего редактора становится белым со светло-серым передним планом для текста:
alt text http: // www .elbalazo.net / post / WhiteBackgoundVS.jpg
Не могу понять, где и как это исправить. Я не вижу выхода. Примечание. Я использую R # 5.0+, поэтому не знаю, имеет ли это какое-либо отношение к этой проблеме с цветом или что-то в этом роде ... возможно, это переопределяет некоторые вещи VS или это просто проблема VS, которую я не знаю. . вероятно, просто не смотрит в нужную область под Шрифтами и цветами ... но многие элементы переднего плана элемента доступны только для чтения. Button needs to be clicked twice to trigger function
but I don't understand the answer (too technical;-), может кто-нибудь помочь объяснить это, пожалуйста?
Исходный стиль в вашем div 'xx' может вызывать некоторые проблемы ...
Допустим, у вас есть правило таблицы стилей, настроенное для создания вашего div
s изначально скрыт. Что-то вроде:
div { display: none }
(... где, конечно, селектор ( div
), вероятно, будет немного менее широким)
Кажется, это работает правильно, поскольку страница будет загружаться с все ваши элементы div
скрыты («свернуты»). Однако фактического значения свойства style.display для самих элементов нет - они просто наследуют значение из таблицы стилей. Итак, в вашем коде тест, который вы используете, чтобы проверить, скрыт ли элемент:
if(e.style.display=="none"){
... завершится ошибкой, неправильно идентифицируя цель как видимую и вызывая стиль .Свойство display
должно быть установлено в значение «none» (которое не имеет видимого эффекта, поскольку элемент уже был скрыт таблицей стилей). Затем в следующий раз, когда будет нажата кнопка, значение, которое вы установили в последний раз, приведет к успешному выполнению текста, и ваша процедура установит style.display
на «блокировать».
простой способ исправить это - просто отменить ваш тест и проверить наличие «блока»:
if(e.style.display=="block"){
e.style.display="none"
} else {
e.style.display="block"
}
... однако это развалится, если у вас есть некоторые элементы, настроенные так, чтобы они были изначально visible: вы просто столкнетесь с той же проблемой в обратном порядке, когда первое нажатие кнопки не окажет какого-либо видимого эффекта. Для более надежного поведения вам необходимо протестировать стиль, который фактически активен для элемента:
function getStyle(el, name)
{
// the way of the DOM
if ( document.defaultView && document.defaultView.getComputedStyle )
{
var style = document.defaultView.getComputedStyle(el, null);
if ( style )
return style[name];
}
// IE-specific
else if ( el.currentStyle )
return el.currentStyle[name];
return null;
}
function toggleDiv(a){
var e=document.getElementById(a);
if(!e)return true;
if(getStyle(e, "display") == "none"){
e.style.display="block"
} else {
e.style.display="none"
}
return true;
}
Здесь мы используем вспомогательную функцию, getStyle ()
, чтобы получить активное значение в перекрестном виде. платформенная манера. См. Также: getComputedStyle ()
, currentStyle
Что-то вроде этого может сработать для вас. Но поместите это в начало документа. функция загрузки окна важна, потому что DOM необходимо загрузить, прежде чем вы сможете возиться с полем ввода
<input id="divOpener" rel="xx" type="button" class="button" value="click here to expand/collapse"/>
и это
window.onload = function(){
// get input field from html
var myInput = document.getElementById('divOpener');
// add onclick handler
myInput.onclick = function(){
// if you really need to say which div in the document body, you can
// add it to the rel or ref etc. attributes then get the value with
// get attribute
var myDiv = document.getElementById(this.getAttribute('rel'));
if(!myDiv) return;
if(myDiv.style.display=="none"){
myDiv.style.display="block";
} else {
myDiv.style.display="none";
}
}
}