2010-08-25 36 views
2

我想從一個HTML文本輸入值分配一個變量,然後在一個函數中使用該變量使用jQuery的「:包含」選擇隱瞞不變量匹配的div ...這裏是我的代碼...Noob JavaScript問題 - 試圖從HTML文本輸入分配變量,然後在函數中使用該變量

<head> 
<script language="JavaScript" type="Text/JavaScript" src="jquery.js"></script> 
<script language="JavaScript" type="Text/JavaScript"> 
var myform = document.forms[0]; 
var FilterText = myform.FilterText.value; 

function FilterBlocks() 
{ 
$("div.block").hide(); 
$("div.block:contains(FilterText)").show(); 
} 
</script> 
</head> 

<body> 
<form action="#"> 
<input class="navButtons" type="text" name="FilterText"> 
<input class="navButtons" type="button" name="FilterButton" value="Filter Videos"  onMouseUp="FilterBlocks()"> 
<br /><br /> 
</form> 
<div class="block"><a href="1.html"><img src="images/1.jpg">This is the title<a></div> 
</body> 

我試圖做與變量的警報()是我的試圖使用,但它回來了未定義。

任何幫助將不勝感激......謝謝!

回答

1

你可能想要做這種方式,

function FilterBlocks(){ 
    $("div.block").hide(); 
    $("div.block:contains("+FilterText+")").show(); 
} 

而且,呼籲var myform = document.forms[0];,在上面的代碼,會導致myformundefined因爲DOM還沒有準備好。

你可能想這樣說,

<script language="JavaScript" type="Text/JavaScript"> 
$(function(){ 
    // call it when DOM is ready 
    var myform = document.forms[0]; 
    var FilterText = myform.FilterText.value; 

    function FilterBlocks(){ 
    $("div.block").hide(); 
    $("div.block:contains("+FilterText+")").show(); 
    } 
}); 
</script> 

更好的jQuery風格的代碼,我的建議是,

<input class="navButtons" type="button" name="FilterButton" value="Filter Videos"  onMouseUp="FilterBlocks()"> 

只是,

<input class="navButtons" type="button" name="FilterButton" value="Filter Videos" > 

您的jQuery的是,

<script language="JavaScript" type="Text/JavaScript"> 
$(function(){ 
    // call it when DOM is ready 
    var myform = document.forms[0]; 

    $('.navButtons:button').click(function(){ 
    var FilterText = myform.FilterText.value; 
    $("div.block").hide(); 
    $("div.block:contains("+FilterText+")").show(); 
    }); 
}); 
</script> 
+0

感謝您的幫助......您上次清理過的jQuery看起來很棒!很多人都會接受初學者,但我會喜歡解剖它... – silverMASH 2010-08-25 05:34:27

2

改爲嘗試$("div.block:contains(" + FilterText + ")").show();。您還需要「轉義」特殊字符((,)等),但這應該適用於簡單的字符串。

而順便說一句,你在調用Javascript中編碼,而不是Java。

+0

感謝您的幫助... ,所以我很清楚... Java是程序,我正在寫的是Javascript ...對不對? 謝謝! – silverMASH 2010-08-25 05:36:01

+0

@ user430264 - 不,Java和javascript根本沒有任何連接。他們是兩種不同的語言,有一些相似之處。 – Reigel 2010-08-25 05:44:54