2017-01-20 18 views
0

我想知道爲什麼,我將下面的代碼添加到我的頁面後,似乎破壞了我函數定義的可信度。爲什麼我的HTML按鈕鏈接到一個未定義的函數?

<script type="text/javascript"> 

if (window.addEventListener) 
{ // Mozilla, Netscape, Firefox 
window.addEventListener('load', WindowLoad, false); 
} 

else if (window.attachEvent) 
{ // IE 
window.attachEvent('onload', WindowLoad); 
} 

function WindowLoad(event) { 
var str = "test"; 

var combo = "<select id=\"users\">"; 
str = $("div.edit").text(); 

var ar = str.split("*"); 

for (i=0; i <= ar.length - 1; i++) 
{ 
    if (ar[i] != "") 
     combo = combo + "<option value=\"" + ar[i] + "\">" + ar[i] +"</option>"; 
    else 
     combo = combo + "<option value=\"\"></option>"; 
} 
combo = combo + "</select>"; 
$("div.edit").html(combo); 
} 
</script> 

按鈕的工作之前

這裏是整個頁面:

<font size="14"><b>Admin</b>  </font><a href="/worksched/table.php">Return to table</a><button onClick="logout();">Log Out</button> 
<br><br><br><br> 
Set values for name on left. 
<br><br> 
<table style="width:100%"> 
<tr> 
<th>Name</th> 
<th>Monday</th> 
<th>Tuesday</th> 
<th>Wednesday</th> 
<th>Thursday</th> 
<th>Friday</th> 
<th>Saturday</th> 
<th>Sunday</th> 
</tr> 
<td><div id="edit" class="edit"><? echo $strout ?></div></td> 
<td><input id="monday"></td> 
<td><input id="tuesday"></td> 
<td><input id="wednesday"></td> 
<td><input id="thursday"></td> 
<td><input id="friday"></td> 
<td><input id="saturday"></td> 
<td><input id="sunday"></td> 
</table><br> 
<button onClick="saveval();">Save Values</button> 
<button onClick="remuser();">Remove this user</button> 
<div id="none"></div> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 

<script type="text/javascript"> 

if (window.addEventListener) 
{ // Mozilla, Netscape, Firefox 
    window.addEventListener('load', WindowLoad, false); 
} 

else if (window.attachEvent) 
{ // IE 
    window.attachEvent('onload', WindowLoad); 
} 

function WindowLoad(event) { 
    var str = "test"; 

    var combo = "<select id=\"users\">"; 
    str = $("div.edit").text(); 

    var ar = str.split("*"); 

    for (i=0; i <= ar.length - 1; i++) 
    { 
     if (ar[i] != "") 
      combo = combo + "<option value=\"" + ar[i] + "\">" + ar[i] +"</option>"; 
     else 
      combo = combo + "<option value=\"\"></option>"; 
    } 
    combo = combo + "</select>"; 
    $("div.edit").html(combo); 
} 
</script> 

<script type="text/javascript"> 
function logout() 
{ 
    var message="logout"; 

    $.post("/worksched/admin.php", { 
    msg: message 
    }) 
    .done(function(data){ 
     $('#none').html(data); 
    }); 
    window.location.href="/worksched/login.php"; 
     //var ar = document.documentElement.innerHTML; 
    //ar = ar + "fdasssssssssssf"; 
    //document.write(ar); 
} 

function remuser() 
{ 
    var itemID = document.getElementByID("") 
    var strUser = itemID.options[itemID.selectedIndex].text; 
    $.post("/worksched/admin.php", { 
     msg: "delete" 
     code: struser 
    }) 
    .done(function(data){ 
     $('#none').html(data); 
    }); 
    alert("User with name: (" + strUser + ") Has been removed from the database"); 

} 
</script> 

後,我加入了頁面加載窗口事件監聽器,我的按鈕開始顯示爲「未捕獲的ReferenceError:saveval未定義爲 at HTMLButtonElement.onclick(admin.php:25)「 如果我嘗試將其全部放入一個塊中,則頁面加載代碼不會執行。

+0

那麼,爲什麼你鏈接在jQuery,但不使用jQuery?然後你可以做'$(window).on('load',WindowLoad)'。它讓我感到害怕,你有一個提及Netscape的評論。 –

+0

哈哈哈確實很有趣。我從堆棧溢出文章複製了該部分。 我使用JQuery而不是添加一個事件監聽器,該代碼的特定部分工作,但我仍然有按鈕問題。 – Thcsparky

回答

0

嗯,我不知道這是否是複製/粘貼錯誤,但saveval函數似乎沒有在整個頁面代碼塊中的任何地方定義。這可能是罪魁禍首。如果沒有,你可以發佈你的saveval-function定義嗎?

+0

我的歉意。我忘了寫,因爲我還沒有完成這個功能。其他按鈕仍然打破。 – Thcsparky

0

也許因爲您打電話後創建功能WindowLoad,請嘗試在檢查瀏覽器及其版本的if之前創建該功能。

+0

不幸的是,這並沒有奏效。 – Thcsparky

0

我發現了這個問題。一位朋友指出,我錯過了其中一個功能的右括號。我現在似乎無法查明它,所以我表示歉意。

相關問題