2012-05-22 3 views
0

Я пытаюсь создать вход (type = "button") и установить onclick-Event в функцию, которая должна передать параметр. Весь объект должен быть добавлен в div, и это все. В основном this - это моя попытка, но я не понимаю, почему это не работает.Динамическое создание кнопки с использованием DOM и редактирование события onclick

Я вставил код в jsfiddle, поэтому его легче воспроизвести. Нажмите here.

Что я делаю неправильно? Я изучаю это методом проб и ошибок, поэтому, пожалуйста, объясните, что случилось. Большое спасибо!

[править] для случая jsfiddle будет вниз на один день, вот код, который я пытался бежать ... :)

<!doctype html> 
<html> 
<head> 
<title>onclick event example</title> 
<script type="text/javascript" language="javascript"> 
var i = 0; 
var h = new Array(); 

function addButton() { 
    i++; 
    var container = document.getElementById("check0"); 

    var h[i] = document.createElement("input"); 
    h[i].type = 'button'; 
    h[i].name = 'number' + i; 
    h[i].value = "number" + i; 
    h[i].id = 'number' + i; 

    h[i].onclick = function() { 
     showAlert(i) 
    }; 

    container.appendChild(h[i]); 
} 

function showAlert(number) { 
    alert("You clicked Button " + number); 
}​ 
</script> 
</head> 
<body> 
<div id="check0"> 
     <input type="button" value="klick mich" id="number0" onclick="addButton()"/> 
</div>​ 
</body> 
</html> 
+0

Введите код. Что, если завтра будет завтра? –

ответ

3

Here является фиксированной скрипкой для вас.

  • var h[i] = ... недействительный JavaScript.
  • Выполняется то, что вы пишете в фрейме JavaScript на jsfiddle, onload, поэтому этот код еще не существует, когда выполняется HTML-код (и ни одна из них не является функцией addButton()).

    <script> 
    var i = 0; 
    var h = new Array(); 
    
    function addButton() { 
        i++; 
        var container = document.getElementById("check0"); 
    
        h[i] = document.createElement("input"); 
        h[i].type = 'button'; 
        h[i].name = 'number' + i; 
        h[i].value = "number" + i; 
        h[i].id = 'number' + i; 
    
        h[i].onclick = function() { 
         showAlert(i) 
        }; 
    
        container.appendChild(h[i]); 
    } 
    
    function showAlert(number) { 
        alert("You clicked Button " + number); 
    } 
    </script> 
    
    <div id="check0"> 
        <input type="button" value="klick mich" id="number0" onclick="addButton()"/> 
    </div>​ 
    
+0

Введите код. Что, если завтра будет завтра? –

+0

Если jsfiddle не работает, весь вопрос не имеет смысла :) Позвольте мне попробовать ... –

+0

Да, я добавил комментарий к вопросу :-) –

0

Попробуйте использовать h.push(...) вместо того, чтобы пытаться отправить несотворённого элемент в массиве

0
  var x = document.getElementById('pagination');//pagination is an empty div in html 
    var y =''; 
    for(var i = 0; i <= (pageMax); i++){ 
     y = y+"<a id ='pageNumber"+i+"' onclick='changePage("+(i+1)+");'>"+(i+1)+"</a>\n "; 
     } x.innerHTML=y } 

я использовал это, чтобы сделать нумерацию страниц для таблицы. Функция создаст ряд чисел до тех пор, пока не будет нажата кнопка max. «ChangePage ("+ (я + 1)"); ... вызовет функцию и отправит индекс i (номер страницы) из pagenumber. также я динамически создаю идентификатор, уникальный для каждого номера.

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