2012-02-07 75 views
2

我不知道为什么我收到此错误:为什么我得到这个Javascript错误“连接没有定义”?

connection is not defined 
document.getElementById("flashTest").sendValFromHtml(connection.value); 

这是我的代码:

function submitCheck() { 
    var hasConnection = document.getElementById("formTest").connection.value.length != 0; 
    var hasLocation = document.getElementById("formTest").location.value.length != 0; 

    document.getElementById("connection").className = hasConnection ? "" : "invalid"; 
    document.getElementById("location").className = hasLocation ? "" : "invalid"; 

    if(hasConnection && hasLocation){ 
     document.getElementById("flashTest").sendValFromHtml(connection.value); 
    } 
} 

HTML:

<form id="formTest" name="formTest" method="post" action=""> 
    <fieldset class="form"> 
     <div class="connection"> 
      <label id="connection">Connection:*</label> 
      <div class="textwrapper"> 
       <select name="connection"> 
        <option value="">Select connection type</option> 
        <option value="dsl">DSL</option> 
        <option value="cable">Cable</option> 
        <option value="fibre">Fibre</option> 
       </select> 
      </div> 
     </div> 
     <div class="location"> 
      <label id="location">Location*:</label> 
      <div class="textwrapper"> 
       <select name="location"> 
        <option value="">Select your location</option> 
        <option value="home">At home</option> 
        <option value="work">At work</option> 
       </select> 
      </div> 
     </div> 
     <div class="postcode"> 
      <label>Postcode:</label> 
      <div class="textwrapper"> 
       <input type="text" name="postcodeVal" id="postcodeVal"> 
      </div> 
     </div> 
     <div class="start clear"> 
     <input type="button" name="sendToFlash" id="sendToFlash" value="Start Test" onclick="submitCheck();" /> 

     </div> 
    </fieldset> 
</form> 

<embed src="/flash/speedtest.swf" id="flashTest" name="flashTest" width="540" height="320" allowscriptaccess="always" type="application/x-shockwave-flash" flashvars="jsfunc=pushResults&jsfunc2=showExtras" /> 
+0

它不会出现连接被定义任何地方根据您向我们展示的代码 – kinakuta 2012-02-07 06:15:22

+0

你能张贴您的HTML代码也? – 2012-02-07 06:18:03

+0

“postcodeVal”定义在哪里? – 2012-02-07 06:20:57

回答

3

首先,形式存储为一个局部变量:

var form = document.getElementById("formTest"); 

然后使用,而不是DOM多次查询这个局部变量:

var hasConnection = form.connection.value.length != 0; 
var hasLocation = form.location.value.length != 0; 

最后,前缀connectionform.

document.getElementById("flashTest").sendValFromHtml(form.connection.value); 
+0

谢谢!完善! – muudless 2012-02-07 06:30:41

2

替换:

var hasConnection = document.getElementById("formTest").connection.value.length != 0; 
var hasLocation = document.getElementById("formTest").location.value.length != 0; 

附:

var hasConnection = document.getElementById("connection").value.length != 0; 
var hasLocation = document.getElementById("location").value.length != 0; 
+0

我试过你的解决方案,现在我得到'document.getElementById(“connection”)。value is undefined'\t 'var hasConnection = document.getElementById(“connection”).value.length!= 0;' – muudless 2012-02-07 06:23:37

+0

2'select'标签没有'id'属性,所以你不能通过使用'document.getElementById()'函数来获取它们的值 – 2012-02-07 06:37:56

1

更改connection.value到:

document.forms.formTest.connection.value 
相关问题