2013-04-26 3 views
1

Итак, я новичок в javascript. Мой код выглядит следующим образом, она основана на XAML файл с холстом и пару границ в нем:Как игнорировать событие в javascript?

var defaultPage = null; 
var aantalKliks; 
var correcteBorders; 
var incorrecteBorders; 
var geenAntwBorders; 

function onLoaded() { 
    defaultPage = document.getElementById('DefaultPage'); 
    alert('In onloaded van Default.xaml.'); 
    aantalKliks = 0; 
    aantalBorderKliks = 0; 

    correcteBorders = new Array(); 
    for (var i = 0; i < 3; i++) { 
     correcteBorders[i] = defaultPage.content.findName('CorrecteBorder' + i); 
    } 
    incorrecteBorders = new Array(); 
    for (var i = 0; i < 3; i++) { 
     incorrecteBorders[i] = defaultPage.content.findName('IncorrecteBorder' + i); 
    } 
    geenAntwBorders = new Array(); 
    for (var i = 0; i < 3; i++) { 
     geenAntwBorders[i] = defaultPage.content.findName('GeenAntwBorder' + i); 
    } 

} 

function OnCanvasClicked() { 
    if (aantalKliks == 2) { 
     aantalKliks = 0; 
    } 
    if (aantalKliks == 0) { 
     for (var i = 0; i < correcteBorders.length; i++) { 
      correcteBorders[i].Visibility = 'Visible'; 
     } 

     for (var i = 0; i < incorrecteBorders.length; i++) { 
      incorrecteBorders[i].Visibility = 'Visible'; 
     } 

     for (var i = 0; i < geenAntwBorders.length; i++) { 
      geenAntwBorders[i].Visibility = 'Visible'; 
     } 

    } else if (aantalKliks == 1) { 
     for (var i = 0; i < correcteBorders.length; i++) { 
      correcteBorders[i].Visibility = 'Collapsed'; 
     } 

     for (var i = 0; i < incorrecteBorders.length; i++) { 
      incorrecteBorders[i].Visibility = 'Collapsed'; 
     } 

     for (var i = 0; i < geenAntwBorders.length; i++) { 
      geenAntwBorders[i].Visibility = 'Collapsed'; 
     } 
     aantalKliks++; 
    } 



    function borderClicked(sender) { 

     for (var i = 0; i < correcteBorders.length; i++) { 
      correcteBorders[i].Visibility = 'Collapsed'; 
     } 

     for (var i = 0; i < incorrecteBorders.length; i++) { 
      incorrecteBorders[i].Visibility = 'Collapsed'; 
     } 

     for (var i = 0; i < geenAntwBorders.length; i++) { 
      geenAntwBorders[i].Visibility = 'Collapsed'; 
     } 
     sender['Visibility'] = 'Visible'; 
    } 

Функция OnCanvasClicked срабатывает при нажатии кнопки в любом месте холста, и делает все границы исчезают/снова. Функция borderClicked запускается при нажатии определенной границы. Функция borderClicked запускается, когда я нажимаю на определенную границу, однако функция OnCanvasClicked также запускается сразу после нее, что вызывает нежелательный результат. Мне кажется, что мне нужно каким-то образом игнорировать функцию OnCanvasClicked, если я нажимаю на границу, я сделал google this но, честно говоря, я не совсем понял, что они имели в виду в большинстве решений, поэтому я надеялся, что кто-то сможет объяснить это мне простым способом, что мне нужно делать (и что я делаю).

+0

вы можете поделиться, как 'событие borderClicked' зарегистрировано –

+0

4 Это одна из нескольких границ, которая его запускает, все они дети холста el который запускает функцию OnCanvasClicked. –

+0

Эффект, который вы смотрите, называется событием, «пузырящимся» с документом. Чтобы остановить это, вам нужно разбить эту цепочку. Вы бросили рыбу, если вы хотите научиться ловить рыбу, вы должны посмотреть здесь, чтобы начать понимать [event bubbling] (http://www.quirksmode.org/js/events_order.html) – Daniel

ответ

4

Вам нужно установить event.stopPropagation(), когда borderClicked функция пожарной

0

Попробуйте, который будет препятствовать Javascript для дальнейшего выполнения

event.preventDefault() 
Смежные вопросы