2016-11-21 3 views
1

Я хочу изменить цвет и предупредить сообщение при нажатии кнопки.Javascript сделать что-то перед предупреждением

function colorChange() { 
    document.getElementById('word').style.color = "red"; 
    alert("color changed!"); 
} 

Я не могу изменить цвет одновременно с предупреждением.

+1

Wrap предупреждение в тайм-аут, и он будет работать, но зачем вам это нужно, конечно, вы не используете оповещения для чего? – adeneo

+0

Я сделаю что-нибудь после ответа на предупреждение, но сначала я должен выяснить эту проблему. Спасибо :) –

ответ

6

Wrap предупреждение в тайм-аут

function colorChange() { 
 
    document.getElementById('word').style.color = "red"; 
 
    setTimeout(function() { 
 
    \t alert("color changed!"); 
 
    },10) 
 
}
<div id="word"> 
 
Word ..... 
 
</div> 
 
<br /> 
 
<button onclick="colorChange()"> 
 
Change color 
 
</button>

Браузер не успевает перерисовки перед срабатыванием оповещения, с помощью тайм-аута вы не задержит тревогу до следующего клеща, когда перекраска завершена.

+0

Но это не сразу ответ с полем предупреждения. Я имею в виду, что я изменил значение 10 на 1, но иногда это не сработает. –

+0

@ namnam0107 - Как долго браузер должен перерисовывать, может отличаться, но единственный способ сделать это, насколько я знаю, - отложить оповещение, чтобы время браузера перерисовывалось, а ожидание 0,010 секунд - это, вероятно, цена, которую вы платите для этого. – adeneo

+0

Итак, когда я продолжаю нажимать кнопку, цвет иногда не меняется. –

0

$(document).ready(function() 
 
{ 
 
    $('#myButton').click(function(){ 
 
    $('#word').css("color","red"); 
 
    
 
    setTimeout(function() { 
 
    \t alert("color changed!"); 
 
    },10) 
 
    }) 
 
    
 
})
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
</head> 
 
<body> 
 
    <p id="word">word</p> 
 
    <button id="myButton" >change color</button> 
 
<body>

+0

Вы используете точно такой же 'setTimeout', указанный в [предыдущем ответе] (http://stackoverflow.com/a/40724746/6225838) ... Можете ли вы объяснить, почему использование' .ready (...) 'jQuery' и анонимная функция ('.click (...)'), улучшает этот ответ? (OP не упоминал jQuery) – CPHPython

+0

, потому что jQuery - мощный инструмент для манипуляции с элементами и стилями html. И готовый jQuery и нажмите вторую функцию аргумента –

+1

Что делать, если OP не хочет использовать jQuery? Как улучшается ваш код [код adeneo] (http://stackoverflow.com/a/40724746/6225838)? – CPHPython

Смежные вопросы