2015-10-09 3 views
1

Как инициализировать переменную в JavaScript с прямым HTML-кодом?как инициализировать переменную в javascript с HTML-кодом напрямую

Я пытаюсь поместить тег animate в переменную, чтобы я мог присоединяться к svg всякий раз, когда происходит событие mouseover. Я использую snap.svg.

var g = HTML CODE 
var s = Snap("#svg"); 
s.mouseover(function(){ 
    s.append(g); 
}); 

Нечто подобное. Я знаю, что этот синтаксис неверен. Я не хотел писать этот тег в моем HTML коде, но держать его скрытым, а затем добавить его

+1

Не используйте '[tag: xxx]' для каждого ключевого слова в своем сообщении, это делает его очень трудным для чтения. –

ответ

2

Вероятно, самый простой способ:

var someHTML = '<div>Heeeyy</div>', 
    someElem = document.getElementById('someElement'); 

someElem.onmouseover = function(){ 
    someElem.insertAdjacentHTML('beforeend', someHTML); 
    someElem.onmouseover = null; // Remove this if you want it to happen on every mouseover event 
} 

В качестве альтернативы, вы можете создать новый элемент с document.createElement('DIV') и установить innerHTML в желаемый html. Затем добавьте созданный элемент с appendChild в родительский (желаемый элемент).

+0

На самом деле я использую SVG. Я не могу добавить DIV, а я пытаюсь добавить [tag: animateTransfom] в svg как дочерний. –

+1

Ну, тогда не создавайте div, а анимируйте элемент, а затем добавляйте его. После того, как вы его создали, вы можете добавить к нему атрибуты с чем-то вроде «elem.setAttribute (« repeatCount »,« indefinite »)' –

+0

. Я установил атрибуты, добавленные к требуемой группе в svg, animateTransform похож на мертвого (не работает вообще), пока я не открою окно разработчика. Выберите его в консоли, нажмите на редактирование как html и ничего не сделайте, и нажмите enter, чтобы он начинался. –

1

animateTransform не имеет хорошей поддержки в некоторых браузерах, таких как IE, поэтому я стараюсь держаться подальше от использования этого метода, если что-то вроде Snap доступно. Если это так, я хотел бы сделать что-то похожее на следующее ...

s = Snap(400, 620); 
var c = s.circle(10,10,10); 
var myMarkup = '<g><rect x="20" y="20" width="100" height="100"></g>' 
c.mouseover(function() { 
    s.append(Snap.parse(myMarkup)) 
    s.select('g').animate({ transform: 't50,50' }, 3000) 
}) 

jsfiddle (наведите курсор на круг)

Если вы просто делали разметку, чтобы добавить элемент AnimateTransform, вы можете пропустить разбор/добавление, а также, как это не нужно.

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