2011-09-13 101 views
4

以下代碼在Firefox中正常工作,但在IE中不起作用。我已經嘗試了對頭文件和腳本調用字符串的各種調整,但是沒有任何東西會使IE運行腳本。 IE中也關閉所有安全性。Internet Explorer 8中的JQuery問題

下面的代碼有什麼問題嗎?

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Smartube</title> 
    <link href="css/default.css" rel="stylesheet" type="text/css" /> 
    <script src="jquery.js" type="text/javascript"></script> 
    <script src="tubeutil.js" type="text/javascript"></script> 
    <script src="init.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    function formfocus() { 
    document.getElementById('1').focus(); 
    } 
    window.onload = formfocus; 
    </script> 
    </head> 

    <body> 



<div class="wrapper"> 
    <img class="displayed" src="gfx/sb.png"> 
    <form class="blocks" action="" method="get"> 
     <p><input type="text" class="search" id="1" /></p> 
     <p><input type="Submit" class="btn" value="" /></p> 
     <ul class="reset autocomplete"></ul> 
    </form> 

    <ul class="reset videos"></ul> 

</div> 
    </body> 
    </html> 

回答

6

你的代碼是不是真的jQuery的,這是直接的JavaScript,但在這裏,你的問題是W3C標準要求的ID,以字母開頭(見http://www.w3schools.com/tags/att_standard_id.asp)。

你可以編寫腳本的jQuery像這樣:

function formfocus() { 
    $('#myid').focus(); 
} 
$(window).load(formfocus); 

編輯:好的,我剛剛測試了IE中的以下內容:

HTML:

<div class="wrapper"> 
<img class="displayed" src="gfx/sb.png"> 
    <form class="blocks" action="" method="get"> 
     <p><input type="text" class="search" id="my1" value="" /></p> 
     <p><input type="Submit" class="btn" value="" /></p> 
     <ul class="reset autocomplete"></ul> 
    </form> 

    <ul class="reset videos"></ul> 

</div> 

JS:

$(document).ready(function () { 
    $('#my1').focus(); 
}); 

Tha t在IE9中工作,所以我認爲它也應該在8工作。測試版本在這裏:http://jsbin.com/ipezey/edit#javascript,html

此外,根據thirtydot的答案,這個測試版本有一個HTML 5文檔類型,而你的版本沒有。這可能是你問題的根源。

+1

+1。另外,在jQuery中,你不需要整個窗口的'load'事件,你可以開始在文檔ready事件中操作DOM。 :) – Shef

+0

非常真實的,我想我會寫這個作爲他的代碼嚴格的jQuery翻譯,但是,我通常只會使用'$(function(){'... – n00dle

+0

無效,但謝謝 –

-1

你根本沒有使用jQuery。

使用這個符號:

$(function() { 
    $('#1').focus(); 
}); 

,而不是所有的JavaScript

+1

這個不會解決問題,「1」根本就不是一個有效的id標準, – oezi

+0

還是沒有效果的, –

0

,你可以閱讀on this question

ID和名稱標記必須以字母開頭([A-ZA-可能是 後跟任意數量的字母,數字([0-9]),連字符(「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。 「)。

因此「1」不是有效的ID。將該ID更改爲「id1」或「searchfield」以使該腳本在所有瀏覽器中都可以工作。

作爲旁註:正如其他人所說,你實際上並沒有在這裏使用jqery,但這不是問題。

+0

還是沒有效果,但是謝謝 –

0

第一張:id="1"is not a valid ID

二:由於您使用jQuery的,我建議你使用jQuery(!):

$(function(){ 
    $('#that-form-element').focus(); 
}); 

這將運行$('#that-form-element').focus();一旦網頁(DOM)已準備就緒。

+0

還是沒有效果但是謝謝 –

0

id指定HTML文檔中元素的唯一標識。

命名規則:

Must begin with a letter A-Z or a-z 
Can be followed by: letters (A-Za-z), digits (0-9), hyphens ("-"), underscores ("_"), colons (":"), and periods (".") 
Values are case-sensitive 
1

這有什麼錯在下面的代碼?

有一件事讓我誤會了,但是我無法知道它是否是你問題的原因(我看不到剩下的JavaScript)。

您錯過了有效的文檔類型,因此Internet Explorer在Quirks Mode中,這非常糟糕!

添加爲的第一行:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
+0

+1這似乎很可能是事業的一部分! – n00dle