2010-08-25 37 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