你这个代码最大的一个问题:就是这段代码放在世界上任何一台电脑里都不会运行成功的
我长这么大从来么听说过JS里有一个叫getElementByName("")这个方法而且这段代码中居然出现了2次这个方法
get开头的只有2个方法getElementsByTagName() getElementById()
希望下面的能够帮到你:
1循环体的作用是找到name="tableName" 的table因为上面是getElementsByTagName("table") 意思是获取页面中所有的tagname(节点名)为table的element
节点名还有另一个表示方法就是nodename但是没有这个方法只有这个属性
2语法是规定这么写的这个是为了解决ie和firefox的兼容问题的table这个元素比较特殊因为我们平时用JS动态插入节点元素的时候都会用var table=documentcreateElement("table");
var tr=documentcreateElement("tr");
var td=documentcreateElement("td");
trappendChild(td); tableappendChild(tr);
这样常理确实能够完成任务但是事实上是实现不了的在2个浏览器具体的我忘记了(可能只在其中一个浏览器中实现不了你可以试下)
所以如果你不想采用这种DOM的插入方法就可以利用这种insertrow的方法
tablerows[index]insertCell(0);
其实有另一种完美的dom方法来完成表格的插入
table分为tbodythead和tfoot如果你想实现表格的DOM插入方法就必须创建其中的一个比如
var table=documentcreateElement("table");
var tbody=documentcreateElement("tbody");
var thead=documentcreateElement("thead");
var thead_tr=documentcreateElement("tr");
for(var i=0;i<3;i++){
var th=documentcreateElement("th");
thead_trappendChild(th);
}
theadappendChild(thead_tr);//这样就实现了thead部分
for(var i=0;i<3;i++){
var tr=documentcreateElement("tr");
for(var j=0;j<3;j++){
var td=documentcreateElement("td");
trappendChild(td);
}
tbodyappendChild(tr);
}
tableappendChild(thead);
tableappendChild(tbody);
documentbodyappendChild(table);//实现包括一行th3行3列的表格
但是象你这个程序确实可以利用insertrow的方法因为表格本身就已经存在了如果你想重新创建可以利用dom的方法那样更完美
3至于这一句
tablerows[index]cells(0)innerText = value;
在IE中确实可以实现 但是在FF中这段代码不起任何作用因为FF不支持innerText你可以把它换成innerHTML这个IE和FF都支持而且它还支持写入HTML代码
<!doctype html>
<html class="">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>无标题文档</title>
<link href="boilerplatecss" rel="stylesheet" type="text/css">
<link href="Untitled-1css" rel="stylesheet" type="text/css">
<script src="respondminjs"></script>
<script>
function addRow() {
var tBodies = oTabletBodies;
var tbody = tBodies[0];
var tr = tbodyinsertRow(tbodyrowslength);
for (var i = 0; i < 4; i++) {
var td_1 = trinsertCell(trlength);
td_1innerHTML = "<div contenteditable='true'>第" + (i + 1) + "列</div>";
if (i > 0 && i < 3) td_1children[0]onkeyup = function() {
var ce = trcells;
var num = ce[1]children[0]innerHTML ce[2]children[0]innerHTML;
if (isNaN(num)) num = "";
ce[3]innerHTML = num;
}
}
}
</script>
</head>
<body>
<table id="oTable" style="background-color:#eeeeee;" bordercolor="#aaaaaa" border="1" cellpadding="0" cellpadding="2" width="100%">
<caption style="text-align:right;">
<input type='text' id='iptTxt'>
<input type="button" value="添加" onclick="addRow()" />
</caption>
<thead>
<tr>
<th>名字</th>
<th>单价</th>
<th>数量</th>
<th>金额</th>
</tr>
</thead>
<tbody></tbody>
</table>
</body>
</html>
<input type="button" onclick="getRows()" value="获取"/>
<script type="text/javascript">
function getRows(){
var rows=documentgetElementById("tableID")rows;
// alert("取得了 "+rowslength +"行");
var cols_2=new Array();
for(var i=1;i<rowslength;i++){
//alert(rows[i]cells[1]innerText);
cols_2push(rows[i]cells[1]innerText);//取每行第二列
}
alert("第二列数据:\n"+cols_2toString());
//假设要搜索“3” ,遍历array即可
var searchKeyWord="3";
for(var i in cols_2){
if(cols_2[i]==searchKeyWord){
alert("found : "+searchKeyWord);
}
}
}
</script>
jsp中js里接收后台传来的值可以使用EL表达式来接收值,使用的是EL语句${request}。如下:
前台页面:js中 ${password},这样js就可以接受从后台中传过来的password值了。
EL表达式是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,EL表达式提供了在 JSP 中简化表达式的方法。
childNodes 这个方法基本没法用,存在严重的浏览器兼容性问题,里面可能包含了很多没用的空节点,所以你用childNodes(索引)获取元素是不对的。
table中获取tr、td等还是挺方便的像这样:
tr=tbsrows[索引]
td=tbsrows[索引]cells[索引]
tbody=tbsrows[0]parentNode
如果要获取td里面没有id的元素比如input那只能用这个方法:
var list=tbsrows[索引]cells[索引]getElementsByTagName('input');
input=list[索引]
普通应用下你可以当js没有childNodes这个方法
trHtml="<tr>"+
"<th style='width: 5%;'><input class='awsui-checkbox' id='checkboxStyle' value='' type='checkbox'/></th>"+
"<th style='width: 6%;'>序号</th>"+
"<th style='width: 8%;'>类型</th>"+
"<th style='width: 23%;'>公司</th>"+
"<th style='width: 23%;'>付款方</th>"+
"<th style='width: 12%;'>金额</th>"+
"<th style='width: 15%;'>日期</th>"+
"<th style='width: 8%;'>状态</th>"+
"</tr>";
$("thead")append(trHtml);
直接用<input class='awsui-checkbox' id='checkboxStyle' value='' type='checkbox'/>就好
你要想获得Repeater里服务器控件(runat="server")的值 必须先知道Repeater里服务器控件ID的命名方式 如果你的页面里的数据只是只读数据可以采用“pwroselove”提供的方法 去掉runat="server" 自己为控件的ID命名 如果你需要和后台交互 就可以用下面的方法
首先Repeater里服务器控件ID的命名方式是 RepeaterClientID_ctl行号_控件名 行号是从00开始的两位数00 01 02 如 Repeater1_ctl00_lblBegin 表示Repeater里第一行lblBegin的ID 给你写个例子你就明白了 代码如下
<%@ Page Language="C#" %>
<%@ Import Namespace="SystemData" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN" ">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
using (DataTable dataTable = new DataTable())
{
dataTableColumnsAddRange(new DataColumn[] { new DataColumn("Begin"), new DataColumn("Deadline") });
dataTableRowsAdd(new object[] { "123", "A" });
dataTableRowsAdd(new object[] { "234", "B" });
dataTableRowsAdd(new object[] { "345", "C" });
Repeater1DataSource = dataTable;
Repeater1DataBind();
}
}
</script>
<html xmlns=">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<input id="lblBegin" runat="server" value='<%# Eval("Begin")%>' type="text" />
<input id="lblDeadline" runat="server" value='<%# Eval("Deadline")%>' type="text" />
<br />
<br />
</ItemTemplate>
</asp:Repeater>
</div>
<script type="text/javascript">
var repeaterId = '<%=Repeater1ClientID %>';//Repeater的客户端ID
var rows = <%=Repeater1ItemsCount%>;//Repeater的行数
for (var i = 0; i < rows; i++) {
alert(documentgetElementById(repeaterId + "_ctl" + getrownumber(i) + "_lblBegin")value);
alert(documentgetElementById(repeaterId + "_ctl" + getrownumber(i) + "_lblDeadline")value);
}
function getrownumber(i) {
if (i > 10) {
return i;
}
else {
return '0' + i;
}
}
</script>
</form>
</body>
</html>
以上就是关于新手javascript问题全部的内容,包括:新手javascript问题、js怎么读取输入框内输入的数字并给变量赋值、js搜索表格等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)