Функция onload () отказывается запускаться? - PullRequest
2 голосов
/ 19 января 2012

Здравствуйте, извините, что беспокою вас таким простым вопросом, но с этим кусочком кода я буквально не нашел ничего плохого в этом, но ни одно из предупреждений даже не сработало, поэтому я знаю, что init даже не был передан window.onload. Вот код:

window.onload()=init;
alert("The file has been linked to.");
function init(){
    alert("Init has been loaded");
var button = document.getElementById("myButton");
    button.onclick = handleButtonClick; 
 }

function handleButtonClick()
{
    alert("button has been clicked");
    var target = document.getElementById("target");
    var image = document.createElement("<img />");
    image.innerHTML = "<img src=../Images/banner_test.jpg alt=Banner height=42          width=42 />" ;
target.appendChild(image);
 }


JS находится во внешнем js-файле, с которым я связан:

<script type="text/javascript" src="../JS/Experiment.js" > </script>

Я что-то неправильно написал или забыл параметр, потому что, как я уже сказал, ни одна из тревог не будет активирована, нет смысла говорить о создании <img /> и его добавлении.

HTML не проблема, я попробовал простой alert() со встроенным <script>, и он работает, но мне нужно, чтобы это было во внешнем файле.

Ответы [ 3 ]

4 голосов
/ 19 января 2012

window.onload это не метод, отбросьте паренсы ()

3 голосов
/ 19 января 2012

window.onload не является функцией, поэтому первая строка будет препятствовать запуску остальных:

window.onload()=init

Это должно быть

window.onload=init;
alert("The file has been linked to.");
function init(){
    alert("Init has been loaded");
var button = document.getElementById("myButton");
    button.onclick = handleButtonClick; 
 }

function handleButtonClick()
{
    alert("button has been clicked");
    var target = document.getElementById("target");
    var image = document.createElement("<img />");
    image.innerHTML = "<img src=../Images/banner_test.jpg alt=Banner height=42          width=42 />" ;
target.appendChild(image);
 }

, обратите внимание, что также функция initдоступен только потому, что JavaScript поднимает не "var" редактируемые функции в верхнюю часть области, так что следите за этим, когда вы указываете на такие функции.

1 голос
/ 19 января 2012

Как уже говорили другие, парены должны быть отброшены.Прежде чем ваш код будет работать нормально, вам нужно исправить еще один код.

  1. document.createElement принимает в качестве параметра простую строку, которая будет именем тега.Ваш текущий код выдаст ошибку в этой точке.
  2. Когда элемент изображения создан, свойство innerHTML для него не имеет смысла.Вы должны явно прикрепить атрибуты / свойства к нему (см. Ниже).

Фиксированный код:

function handleButtonClick()
{
    alert("button has been clicked");
    var target = document.getElementById("target");
    //var image = document.createElement("<img />"); // INVALID!!
    var image = new Image(); // or: document.createElement("img");
    //image.innerHTML = "<img src=../Images/banner_test.jpg alt=Banner height=42          width=42 />" ;
    image.src = "../Images/banner_test.jpg";
    image.alt = "Banner";
    image.height = 42;
    image.width = 42;
    target.appendChild(image);
 }
...