2012-07-23 5 views
0

У меня есть этот HTML-код с вызовом внешней функции и локальные переменные:вызов функции JavaScript в inner.html

document.getElementById("data").innerHTML='<a href="#" onClick="cordova.exec("ChildBrowserCommand.showWebPage", "'+vivijesolo+'");"><img src="'+vivifoto+'" on;></a>'; 

Проблема заключается в том, что увидеть это переменные и Everthing это хорошо, но функция cordova.exec может Не будет исполняемым.

Почему? :(

+3

'' 'нарушает атрибут' onClick', он будет видеть только 'onClick = 'cordova.exec (" ', а затем останавливается, потому что цитата заканчивает его – Esailija

+0

var func =' cordova.exec (" ChildBrowserCommand.showWebPage "," + vivijesolo + '");'; document.getElementById (" data "). innerHTML = ''; попробуйте, если это сработает, вам нужно изменить способ использования котировок. – CosminO

+0

нарушение [soc ] (http://en.wikipedia.org/wiki/Separation_of_concerns#HTML.2C_CSS.2C_and_JavaScript) – jbabey

ответ

0

Вы должны правильно кодировать обработчик события:

onClick="cordova.exec(&quot;ChildBrowserCommand.showWebPage&quot;,&quot;'+vivijesolo+'&quot);" 
2

" нарушает атрибут onClick он будет видеть только onClick="cordova.exec(", а затем остановиться, потому что цитата заканчивается это

Попробуйте

.
var elem = document.getElementById("data"); 
elem.innerHTML = '<a href="#"><img src="'+vivifoto+'"></a>'; 

elem.firstChild.onclick = function() { 
    cordova.exec("ChildBrowserCommand.showWebPage", vivijesolo); 
}; 
+0

Огромное вам спасибо! –

+0

один вопрос, как я могу нажать var elem. items.push ('

  • '+ val +'
  • '); Я пробовал, но всегда получаю сообщение об ошибке [objectHTMLDivElement] –

    +0

    @BojanVidanovic вы можете задать новый вопрос с полным кодом? Мне действительно нужно больше контекста для этого – Esailija

    0

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

    Is it possible to append to innerHTML without destroying descendants' event listeners?

    просто с помощью innerHTML IMHO не настроит событие правильно.

    +0

    Пример Esailija работает отлично. –

    +1

    Вопрос, который вы связываете, - это совсем другая проблема. Выполнение '.innerHTML + =' (Единственное, что я могу сказать, что нужно ** никогда не делать с доверием 110%) всегда создает совершенно новые элементы, поскольку он сериализует и несериализует из DOM в HTML и HTML в DOM, поэтому он не могут сохранять контекст, например обработчики событий. – Esailija

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