2013-10-15 3 views
0

Я пытаюсь запустить функцию в PageLoad:функции JavaScript не загружается

<script type="text/javascript" src="functions.js"></script> 
<body onload="startUp();"> 

Проблема заключается в StartUp() не работает, ни что-либо еще, что я пытаюсь передать в моем файле JS , Я уверен, что ссылка на JS-файл верна; и даже если бы это было не так, я даже попытался вставить все функции. js прямо в заголовок страницы - все равно ничего. Это содержание functions.js:

function startUp() { 
    document.write("running"); //for debugging 
    alert("running"); //for debugging 
    stretchAbdomen(); 
    if (defaultStyle()) { 
     setStyleCookie(1, false); 
    } 
    else { //if mobilestyle 
     setStyleCookie(0, false); 
     if (!window.location.hash) { 
      window.location.hash = "#mobilearea"; 
     } 
    } 
} 

function stretchAbdomen() { 
    var bodyheight = getbodyheight(); 
    var abdomen = document.getElementById('abdomen'); 
    if (window.innerHeight > bodyheight) { 
     var currentpaddingstring = window.getComputedStyle(abdomen, null).getPropertyValue('padding-bottom');  
     var currentpadding = Number(currentpaddingstring.substring(0, currentpaddingstring.length - 2)); //-2 removes "px" from string 
     abdomen.style.paddingBottom = (((window.innerHeight - bodyheight) + currentpadding) + "px"; 
    } 
} 

function getbodyheight() { 
    var body = document.body, 
    html = document.documentElement; 
    return Math.min(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight); 
} 

/*** BELOW HERE SHOULD NOT BE RELEVANT FOR THE QUESTION ***/ 

window.onresize = resetStyleCookie; 

function defaultStyle() { 
    if (window.getComputedStyle(document.getElementById('mobilearea')).getPropertyValue('width') == "1px") 
     return true; 
    else return false; 
} 

function resetStyleCookie() { 
    document.cookie = "stylecookie=" + "; expires=Thu, 01 Jan 1970 00:00:01 GMT;"; 
    setStyleCookie(defaultStyle() ? 1 : 0, true); //forcereset because otherwise it wasn't working on subpages 
} 

function setStyleCookie(number, forcereset) { 
    if (document.cookie.indexOf("stylecookie") == -1 || forcereset) { 
     var now = new Date(); 
     var time = now.getTime(); 
     time += 3600 * 150000; 
     now.setTime(time); 
     document.cookie = "stylecookie=" + number + "; expires=" + now.toGMTString() + "; path=/"; 
    } 
} 

я должен предположить, что есть некоторые компиляции проблема в functions.js, но мои инструменты отладки не показывают никаких ошибок, и я не могу найти что-нибудь сам. Вызов startUp() просто ничего не делает, даже если я не полагаюсь на событие onload для его вызова. Спасибо за понимание!

+0

См. это. http: // stackoverflow. com/questions/4842590/run-function-when-page-is -load – Gireesh

ответ

1

У вас есть ошибка в вашем JS-коде. Попробуйте использовать JSLint.com для проверки вашего кода.

if (window.innerHeight > bodyheight) { 
    var currentpaddingstring = window.getComputedStyle(abdomen, null).getPropertyValue('padding-bottom');  
    var currentpadding = Number(currentpaddingstring.substring(0, currentpaddingstring.length - 2)); //-2 removes "px" from string 
    abdomen.style.paddingBottom = (((window.innerHeight - bodyheight) + currentpadding) + "px"; 
} 

Вы пропускаете последний ) на abdomen.style.padding.bottom.

Ошибка:.. Ожидаемая «)», чтобы соответствовать «(» из линии 22, и вместо этого увидел «;»

+1

Th на это было, спасибо! Я запускал его через JSLint, но JSLint жаловался на кучу вещей, таких как пробелы и вкладки, а затем сказал, что он уходит. Вероятно, я не использовал его правильно. –

+0

Я запускаю его с помощью браузера Accept; Tolerate == и! =, Неиспользуемые параметры, отсутствует «использовать строгую» прагму, глупость, неэффективность подписки и беспорядочное пустое пространство. По крайней мере, для первого прохода, когда я пытаюсь найти ошибку в нескольких сотнях строк. –

-1

Вам необходимо указать функцию, f.e.

<body onload="startUp"> 

Обязательно укажите его после его определения (как это было в вашем примере с внешним JavaScript).

+0

Нет. На самом деле атрибуты html содержат тела функций, поэтому это должен быть вызов функции. –

0
<html> 

<head> 

<script type="text/javascript"> 

function startUp() { 
document.write("running"); //for debugging 
alert("running"); //for debugging 

//stretchAbdomen(); 
if (defaultStyle()) { 
    setStyleCookie(1, false); 
} 
else { //if mobilestyle 
    setStyleCookie(0, false); 
    if (!window.location.hash) { 
     window.location.hash = "#mobilearea"; 
    } 
} 
} 

</script> 

</head> 

<body onload="startUp();"> 

</body> 

</html> 

Приведенный выше код работает для меня, как вы можете видеть, я взял только функцию, которую вы пытаетесь ссылаться, и поместили ее в теги скриптов, но она работает. Мне кажется, что проблема возникает, когда вы пытаетесь ссылаться на функцию stretchAbdomen.

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