2012-07-20 59 views
1

我試圖通過發送一個文本框接收到的用戶輸入,然後發送輸入到一個javascript,這是另一個文件(myfile.js)。由於某些原因,html部分不起作用。下面是代碼: myfile.js:無法在HTML中運行javascript onClick?

var TRange=null; 

function findString (str) { 
if (parseInt(navigator.appVersion)<4) return; 
var strFound; 
if (window.find) { 

    // CODE FOR BROWSERS THAT SUPPORT window.find 

    strFound=self.find(str); 
    if (!strFound) { 
    strFound=self.find(str,0,1); 
    while (self.find(str,0,1)) continue; 
    } 
} 
else if (navigator.appName.indexOf("Microsoft")!=-1) { 

    // EXPLORER-SPECIFIC CODE 

    if (TRange!=null) { 
    TRange.collapse(false); 
    strFound=TRange.findText(str); 
    if (strFound) TRange.select(); 
    } 
    if (TRange==null || strFound==0) { 
    TRange=self.document.body.createTextRange(); 
    strFound=TRange.findText(str); 
    if (strFound) TRange.select(); 
    } 
} 
else if (navigator.appName=="Opera") { 
    alert ("Opera browsers not supported, sorry...") 
    return; 
} 
if (!strFound) alert ("String '"+str+"' not found!") 
return; 
} 

search.html

<!DOCTYPE html> 
<HTML> 
<HEAD> 
</head> 
<title>Search</title> 
<body> 
<script src="myfile.js" type="text/javascript"></script> 
<form name="input"> 

Search for: <input type="text" id ="keytex" name="keytext" onClick='if(document.getElementById("keytex").value!=\'\') findString(document.getElementById("keytex").value); return(false);'> 
</form> 
<p> You can search this text. Search the text again</p> 
</body> 
</html> 
+2

一切有關這是很可怕的做法。切勿使用瀏覽器嗅探,也不要直接在您的html中綁定您的點擊事件! – 2012-07-20 00:59:03

回答

1

嗯......你甚至檢查你的HTML? (有許多錯誤在你的代碼,這裏有一個。)

<input onClick='if(document.getElementById("keytex").value!=\'\') findString(document.getElementById("keytex").value); return(false);'> 

看到那些\'?你不能在HTML中做到這一點。另外,使用括號if(){}內聯代碼。

這應該工作:

if(document.getElementById("keytex").value!="") 

PS:不要使用內嵌的JavaScript。他們只會在最後給你一個更混亂的HTML。

//Good 
document.querySelector("#keytex").addEventListener("click",function(){ 
    if(this.value!=""){    //Use "this" to refer back the element. 
     findString(this.value); 
    } 
    return false; 
}); 

進一步瞭解:

+0

使用'的document.getElementById( 「keytex」)的addEventListener( 「點擊」,函數(){' – 2012-07-20 02:24:51

+0

@ShaquinTrifonoff - 。我用'querySelector'有僅僅因爲懶惰的肯定'getElementById'更好。 – 2012-07-20 03:28:51

0

可能要使用平變化或事件的onkeyup - 不是的onclick