2012-12-04 47 views
0

我創建了一些將代碼提交出來的JavaScript代碼。下面是代碼:我的JavaScript代碼不在本地工作,但在jsfiddle上工作正常,爲什麼?

<script type="text/javascript"> 
var myForm = document.forms['myForm']; 

var formSubmit = document.getElementById('formSubmit'); 


formSubmit.onclick = function(){ 
myForm.submit(); 
} 
</script> 

<form name="myForm" action="http://msn.com" method="post"> 
</form> 
<div id="formSubmit"><button>Click me</button></div> 

,當我在http://jsfiddle.net/HrCxz/試試這個代碼,它工作正常。但是,當我在HTML文件中添加此代碼並運行該頁面時,它不起作用。代碼有什麼問題?請修復此問題,並提前致謝。

+0

同時具有變量和表單名稱myForm可能會導致問題。給變量一個不同的名字。與'formSubmit'一樣。 – Oded

+1

你打電話點擊div元素? – CR41G14

+0

向左看,並注意到'onLoad'選項被選中。另外:爲什麼你不使用''? –

回答

3

在小提琴中,您的代碼在onload處理程序中運行。這是默認選項,但左側​​面板允許您更改它。如果你改變它在<head>運行,那麼小提琴無法正常工作或:http://jsfiddle.net/HrCxz/1/

您需要可以添加自己的onload處理程序,或試圖操縱的元素後,將你的腳本塊。腳本塊按照瀏覽器從上至下分析頁面時的順序執行。任何給定的腳本塊中的JS只能操作已經被解析的元素,也就是說,看起來更接近源頭的元素,除非你把你的代碼放在事件處理程序中調用onload事件(或者從瀏覽器準備好的文檔中支持它,或者如果您使用提供它或自己編碼的庫)。

+0

非常感謝。它現在有效。 –

0

JSFiddle正在使用onload事件。

第1步:

通過移動<form>標籤下方的JS試試這個,

<form name="myForm" action="http://msn.com" method="post"> 
</form> 
<div id="formSubmit"><button>Click me</button></div> 

<script type="text/javascript"> 
    var myForm = document.forms['myForm']; 

    var formSubmit = document.getElementById('formSubmit'); 


    formSubmit.onclick = function(){ 
     myForm.submit(); 
    } 
</script> 

第2步:

或者可以附加onload事件,這樣,

<script type='text/javascript'>//<![CDATA[ 
    window.addEvent('load', function() { 
    var myForm = document.forms['myForm']; 

    var formSubmit = document.getElementById('formSubmit'); 

    formSubmit.onclick = function(){ 
     myForm.submit(); 
    } 
    });//]]> 

</script> 

<form name="myForm" action="http://msn.com" method="post"> 
</form> 

<div id="formSubmit"><button>Click me</button></div> 
0

您正在調用div元素的click功能,您是否需要在按鈕上執行此操作? var formSubmit = document.getElementById('BUTTONIDHERE');

0

您的代碼示例不起作用,因爲在瀏覽器有機會加載DOM元素之前正在處理JavaScript。有必要將JavaScipt代碼片段放在關閉主體標籤之前(因此在加載DOM元素之後進行處理),或者使用'on load'或'on ready'事件處理程序來檢測DOM何時加載然後解僱你的Javascript。

下面是如何火時,DOM元素已加載JavaScript的三個例子:

1)如果你使用jQuery,過去你的Javascript到$(文件)。就緒()事件處理程序:

$(document).ready(function() { 
    // Handler for .ready() called. 
    var myForm = document.forms['myForm']; 
    var formSubmit = document.getElementById('formSubmit'); 

    formSubmit.onclick = function(){ 
    myForm.submit(); 
    } 
}); 

2)您可以使用jQuery的替代語法文件「準備好」:

$(function() { 
    // Handler for .ready() called. 
    var myForm = document.forms['myForm']; 
    var formSubmit = document.getElementById('formSubmit'); 

    formSubmit.onclick = function(){ 
    myForm.submit(); 
    } 
}); 

2)你的JavaScript添加到綁定到窗口「負荷」事件的回調函數 - 日也是一個事件處理程序:

window.addEvent('load', function() { 
    var myForm = document.forms['myForm']; 
    var formSubmit = document.getElementById('formSubmit'); 

    formSubmit.onclick = function(){ 
    myForm.submit(); 
    } 
}) 

乾杯!

相關問題