Почему не работает второй Event?
Подскажите, почему не работает Event??????
Еvent указан в коде в комментарии. <html> <head> <title></title> </head> <body> <script> function ButtonAnzeigen(strId, zIndexAngabe, strPosition){ this.strId = strId; this.zIndexAngabe = zIndexAngabe; this.strPosition = strPosition; a = document.createElement("button"); a.style.zIndex = zIndexAngabe; a.innerHTML = "Analyse"; a.style.right = 0; a.style.bottom = 0; a.style.color = "rgb(0,100,100)"; a.style.position = strPosition; a.id = strId; document.body.appendChild(a); } function TextZerlegen(){ m = document.createElement("div"); document.body.appendChild(m); m.id = "div"; v = document.getElementById("iA").value; c = new Array(); for(x = 0; x < v.length; x++){ c[x] = document.createElement("span"); m.appendChild(c[x]); c[x].innerHTML = v[x]; c[x].id = "span"+x; } m.style.position = "absolute"; m.style.top = 100; m.style.fontSize = 50; m.style.fontFamily = "Calibri"; } function InputArea_Anzeigen(str_idAngabe, strPositionAngabe, zIndexAngabe){ this.strPositionAngabe = strPositionAngabe; this.str_idAngabe = str_idAngabe; this.zIndexAngabe = zIndexAngabe; document.body.style.backgroundColor = "#f3f3f3"; v = document.createElement("input"); v.id = str_idAngabe; v.style.position = strPositionAngabe; v.style.zIndex = zIndexAngabe; v.style.color = "rgb(255,255,255)"; v.style.backgroundColor = "rgb(0,0,150)"; v.style.left = 0; v.style.top = 0; v.style.fontSize = 50; v.style.textShadow = "red 0 0 1px, red 5px 5px 3px"; v.style.width = window.innerWidth; document.body.appendChild(v); } // Anwendungsblock var iA = new InputArea_Anzeigen("iA", "absolute", 0); var b = new ButtonAnzeigen("b", 20, "absolute"); a.onclick = function(){ TextZerlegen(); }; // Почуму он не работает??????????????? document.getElementById("span1").onclick = function(){ alert("welcome"); }; </script> </body> </html> |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
<script type="text/javascript">
function setElement(element) {
return document.createElement(element);
}
function getElement(element) {
return document.getElementById(element);
}
function append(element1,bool,element2) {
bool=bool || false;
if(!bool) {
return document.body.appendChild(element1);
} else {
return element1.appendChild(element2);
}
}
var div=setElement('div');
div.id='div';
append(div);
var button=setElement('button');
button.innerHTML='Click';
append(div,true,button);
var i=0;
button.onclick=function() {
var span=setElement('span');
span.id='span'+i;
span.innerHTML='Text span'+i;
span.onclick=function() {
alert(this.id);
};
append(div,true,span);
++i;
}
</script>
</body>
</html>
|
JavaScriptProgrammer, а как бы вы хотели чтобы это работало?
// Почуму он не работает???????????????
document.getElementById("span1").onclick = function(){
alert("welcome");
};
span1 не существует на момент вызова данных строк |
Почему не работает второй Event? Ответ.
Почему span1 не существует? В FireDebug в BODY существует. Я объявлял в функции глобальный массив переменных. Этот глобальный массив переменных, что пропадает, после того как функция себя выполнила?. Или я чего-то не так понимаю? Объясните пожалуйста.
function TextZerlegen(){ m = document.createElement("div"); document.body.appendChild(m); m.id = "div"; v = document.getElementById("iA").value; // объявлен глобально, без var c = new Array(); for(x = 0; x < v.length; x++){ c[x] = document.createElement("span"); m.appendChild(c[x]); c[x].innerHTML = v[x]; c[x].id = "span"+x; } m.style.position = "absolute"; m.style.top = 100; m.style.fontSize = 50; m.style.fontFamily = "Calibri"; } // Почуму он не работает??????????????? document.getElementById("span1").onclick = function(){ alert("welcome"); }; |
Почему Вы в event onclick кнопки вкладываете еvent onclick span????????
Почему второй onclick надо вкладывать в onclick кнопки?????????? Почему второй onclick не работает если его не вкладывать??????
button.onclick=function() {
31
var span=setElement('span');
32
span.id='span'+i;
33
span.innerHTML='Text span'+i;
34
span.onclick=function() {
35
alert(this.id);
36
};
|
Цитата:
я не знаю когда вы его наблюдаете "В FireDebug в BODY"...но до вызова функции TextZerlegen() никаких span+x не появится Цитата:
2. второй onclick относится уже к создаваемому span 3. можете потом отдельно добавить данное событие к созданным элементам |
Для примера показано.
Так как если будет так называемая запись, чтобы после обновления страницы все оставалось на местах, то тут нужно будет создать и заполнять массив, где после его разбирать и указывать события. |
| Часовой пояс GMT +3, время: 10:25. |