61阅读

perl数组添加元素-jsappendChild与removeChild添加、移除页面元素

发布时间:2018-03-21 所属栏目:perl数组添加元素

一 : jsappendChild与removeChild添加、移除页面元素

jquery的append()和remove方法,本文将为大家介绍在JavaScript中使用a()方法向页面元素中追加子对象和removeChild()方法从页面中移除对象,先看如下的HTML代码:




一共有两个页面元素,现在我们想把id="ch"的span元素追加到div中,我们可以使用a()方法来完成,如下:
d
ocument.getElementById('nw').a(document.getElementByIdx_x_x('ch'));
如果你使用的浏览器是火狐,那么使用firebug查看页面元素,你会发现span元素是div元素的子对象了,如果你用的不是火狐浏览器,那么可以通过css来检测span现在是不是div元素的子对象。

现在来介绍如何用removeChild()移除对象,


div元素中包含子元素span,我们使用removeChild()将span标签移除,
document.getElementByIdx_x_x('nw').removeChild(document.getElementByIdx_x_x('ch'));
使用firebug或css检测页面,发现span标签已经不存在了。

平时我使用a()一般是创建一个页面窗口,而使用removeChild()一般是从页面中移除页面窗口

如果以上说明还没有搞懂,请复制这个链接查看

二 : 动态添加表单元素 经典代码

动态添加表单元素 经典代码
[html]
<html >
<head>
<title>动态添加表单元素</title>
</head>
<script language="javascript">
function AddElement(mytype){
var mytype,TemO=document.getElementById("add");
var newInput = document.createElement("input");
newInput.type=mytype;
newInput.name="input1";
TemO.appendChild(newInput);
var newline= document.createElement("br");
TemO.appendChild(newline);
}
</script>
<body>
<form action="" method="get" name="frm">
<div id="add">
<input type="text" name="textfield">

</div>
</form>
<input name="" type="button" value="新建文本框" onClick="AddElement(&#39;text&#39;)" />
<input name="" type="button" value="新建复选框" onClick="AddElement(&#39;checkbox&#39;)" />
<input name="" type="button" value="新建单选框" onClick="AddElement(&#39;radio&#39;)" />
<input name="" type="button" value="新建文件域" onClick="AddElement(&#39;file&#39;)" />
<input name="" type="button" value="新建密码框" onClick="AddElement(&#39;password&#39;)" />
<input name="" type="button" value="新建提交按钮" onClick="AddElement(&#39;submit&#39;)" />
<input name="" type="button" value="新建恢复按钮" onClick="AddElement(&#39;reset&#39;)" />
</body>www.2cto.com
</html>

作者:Primary_wind

三 : perl中数组的元素如何快速去重?

废话不多说,直接上代码,其实就是用了1个grep函数代替循环:
#数组元素去重@v=values %hash;
printscalar(@v),"\n";
my%hash;
#grep保存符合条件的元素
@v=grep{++$hash{$_}<2}@v;
printscalar(@v);
=============grep的用法见下文===========================

本文和大家重点学习一下Perl grep函数的用法,Perlgrep函数有2种表达方式,具体是哪2种请看本文的详细介绍吧。

Perl grep函数详解

(一)grep有两种表达方式:

◆grepBLOCKLIST
◆grepEXPR,LIST

BLOCK表示1个code块,通常用{}表示;EXPR表示1个表达式,通常是正则表达式。原文说EXPR可是任何东西,包括1个或多个变量,操作符,文字,函数,或子函数调用。
LIST是要匹配的列表。

Perlgrep函数对列表里的每个元素进行BLOCK或EXPR匹配,它遍历列表,并临时设置元素为$_。在列表上下文里,grep返回匹配命中的所有元素,结果也是个列表。在标量上下文里,grep返回匹配命中的元素个数。

(二)grepvs.loops

openFILE"printgrep/terrorism|nuclear/i,;;

这里打开1个文件myfile,然后查找包含terrorism或nuclear的行。;返回1个列表,它包含了文件的完整内容。可能你已发现,如果文件很大的话,这种方式很耗费内存,因为文件的所有内容都拷贝到内存里了。

代替的方式是使用loop(循环)来完成:

  1. while($line=;){
  2. if($line=~/terrorism|nuclear/i){print$line}
  3. }

上述code显示,loop可以完成grep能做的任何事情。那为什么还要用grep呢?答案是grep更具Perl风格,而loop是C风格的。
更好的解释是:(1)grep让读者更显然的知道,你在从列表里选择某元素;(2)grep比loop简洁。
一点建议:如果你是Perl新手,那就规矩的使用loop比较好;等你熟悉Perl了,就可使用grep这个有力的工具。

(三)几个Perlgrep函数的示例

1.统计匹配表达式的列表元素个数

$num_apple=grep/^apple$/i,@fruits;

在标量上下文里,grep返回匹配中的元素个数;在列表上下文里,grep返回匹配中的元素的1个列表。

所以,上述code返回apple单词在@fruits数组中存在的个数。因为$num_apple是个标量,它强迫grep结果位于标量上下文里。

2.从列表里抽取唯一元素

  1. @unique=grep{++$count{$_}<</span>2}
  2. qw(abacddefgfhh);
  3. print"@uniquen";

上述code运行后会返回:abcdefgh
即qw(abacddefgfhh)这个列表里的唯一元素被返回了。为什么会这样呀?让我们看看:

%count是个hash结构,它的key是遍历qw()列表时,逐个抽取的列表元素。++$count{$_}表示$_对应的hash值自增。在这个比较上下文里,++$count{$_}与$count{$_}++的意义是不一样的哦,前者表示在比较之前,就将自身值自增1;后者表示在比较之后,才将自身值自增1。所以,++$count{$_}<2表示将$count{$_}加1,然后与2进行比较。$count{$_}值默认是undef或0。所以当某个元素a第一次被当作hash的关键字时,它自增后对应的hash值就是1,当它第二次当作hash关键字时,对应的hash值就变成2了。变成2后,就不满足比较条(www.61k.com)件了,所以a不会第2次出现。

所以上述code就能从列表里唯一1次的抽取元素了。

◆抽取列表里精确出现2次的元素

  1. @crops=qw(wheatcornbarleyricecornsoybeanhay
  2. alfalfaricehaybeetscornhay);
  3. @duplicates=grep{$count{$_}==2}
  4. grep{++$count{$_}>;1}@crops;
  5. print"@duplicatesn";

运行结果是:rice

这里grep了2次哦,顺序是从右至左。首先grep{++$count{$_}>;1}@crops;返回1个列表,列表的结果是@crops里出现次数大于1的元素。
然后再对产生的临时列表进行grep{$count{$_}==2}计算,这里的意思你也该明白了,就是临时列表里,元素出现次数等于2的被返回。

所以上述code就返回rice了,rice出现次数大于1,并且精确等于2,明白了吧?:-)

3.在当前目录里列出文本文件

  1. @files=grep{-fand-T}glob'*.*';
  2. print"@filesn";

这个就很容易理解哦。glob返回1个列表,它的内容是当前目录里的任何文件,除了以'.'开头的。{}是个code块,它包含了匹配它后面的列表的条件。这只是grep的另1种用法,其实与grepEXPR,LIST这种用法差不多了。-fand-T匹配列表里的元素,首先它必须是个普通文件,接着它必须是个文本文件。据说这样写效率高点哦,因为-T开销更大,所以在判断-T前,先判断-f了。

4.选择数组元素并消除重复

  1. @array=qw(Tobeornottobethatisthequestion);
  2. @found_words=
  3. grep{$_=~/b|o/iand++$counts{$_}<</span>2;}@array;
  4. print"@found_wordsn";

运行结果是:Tobeornottoquestion

{}里的意思就是,对@array里的每个元素,先匹配它是否包含b或o字符(不分大小写),然后每个元素出现的次数,必须小于2(也就是1次啦)。
grep返回1个列表,包含了@array里满足上述两个条件的元素。


5.从二维数组里选择元素,并且x

  1. #Anarrayofreferencestoanonymousarrays
  2. @data_points=([5,12],[20,-3],
  3. [2,2],[13,20]);
  4. @y_gt_x=grep{$_->;[0]<</span>$_->;[1]}@data_points;
  5. foreach$xy(@y_gt_x){print"$xy->;[0],$xy->;[1]n"}

运行结果是:
5,12
13,20

这里,你应该理解匿名数组哦,[]是个匿名数组,它实际上是个数组的引用(类似于C里面的指针)。
@data_points的元素就是匿名数组。例如:

foreach(@data_points){
print$_->;[0];}

这样访问到匿名数组里的第一个元素,把0替换成1就是第两个元素了。

所以{$_->;[0]<$_->;[1]}就很明白了哦,它表示每个匿名数组的第1个元素的值,小于第二个元素的值。而grep{$_->;[0]<$_->;[1]}@data_points;就会返回满足上述条件的匿名数组列表。所以,就得到你要的结果啦!

6.简单数据库查询

Perlgrep函数的{}复杂程度如何,取决于program可用虚拟内存的数量。如下是个复杂的{}示例,它模拟了1个数据库查询:

  1. #@databaseisarrayofreferencestoanonymoushashes
  2. @database=(
  3. {name=>;"WildGinger",
  4. city=>;"Seattle",
  5. cuisine=>;"AsianThaiChineseKoreanJapanese",
  6. expense=>;4,
  7. music=>;"",
  8. meals=>;"lunchdinner",
  9. view=>;"",
  10. smoking=>;"",
  11. parking=>;"validated",
  12. rating=>;4,
  13. payment=>;"MCVISAAMEX",
  14. },
  15. #{...},etc.
  16. );
  17. subfindRestaurants{
  18. my($database,$query)=@_;
  19. returngrep{
  20. $query->;{city}?
  21. lc($query->;{city})eqlc($_->;{city}):1
  22. and$query->;{cuisine}?
  23. $_->;{cuisine}=~/$query->;{cuisine}/i:1
  24. and$query->;{min_expense}?
  25. $_->;{expense}>;=$query->;{min_expense}:1
  26. and$query->;{max_expense}?
  27. $_->;{expense}<</span>=$query->;{max_expense}:1
  28. and$query->;{music}?$_->;{music}:1
  29. and$query->;{music_type}?
  30. $_->;{music}=~/$query->;{music_type}/i:1
  31. and$query->;{meals}?
  32. $_->;{meals}=~/$query->;{meals}/i:1
  33. and$query->;{view}?$_->;{view}:1
  34. and$query->;{smoking}?$_->;{smoking}:1
  35. and$query->;{parking}?$_->;{parking}:1
  36. and$query->;{min_rating}?
  37. $_->;{rating}>;=$query->;{min_rating}:1
  38. and$query->;{max_rating}?
  39. $_->;{rating}<</span>=$query->;{max_rating}:1
  40. and$query->;{payment}?
  41. $_->;{payment}=~/$query->;{payment}/i:1
  42. }@$database;
  43. }
  44. %query=(city=>;'Seattle',cuisine=>;'Asian|Thai');
  45. @restaurants=findRestaurants(@database,%query);
  46. print"$restaurants[0]->;{name}n";

运行结果是:WildGinger

四 : SqlParameter数组添加到SqlCommand中,CommandType.Text

  protected void Button1_Click(object sender, EventArgs e)
   {
       string strSql="insert into Invoice_Rebate_Customer_L (FORM_ID,LINE_NO) values (@formNo,@lineNo)";       
       SqlParameter[] paras =new SqlParameter[2];
       paras[0] = new SqlParameter("@formNo", SqlDbType.NVarChar);
       paras[0].Value = "88888";
       paras[1] = new SqlParameter("@lineNo", SqlDbType.Int);
       paras[1].Value = 8;
       ExecuteSql(strSql, paras, CommandType.Text);   
   }
   void ExecuteSql(string strSql,SqlParameter[] paras,CommandType cmdType)
   {
       SqlConnection con = new SqlConnection("Server=aukm2;Database=BU;UID=buuser;PWD=buinfo");
       con.Open();
       SqlCommand cmd = new SqlCommand();
       cmd.Connection = con;
       cmd.CommandType = cmdType;
       cmd.CommandText = strSql;       
       foreach (SqlParameter p in paras)
       {
           cmd.Parameters.Add(p);
       }
       cmd.ExecuteNonQuery();
       con.Close();
   }

扩展:parametertype 数组 / parametertype 传数组 / commandtype.text

本文标题:perl数组添加元素-jsappendChild与removeChild添加、移除页面元素
本文地址: http://www.61k.com/1163580.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1