本文将带您了解关于创建一个HTML表,其中每个TR都是一个FORM的新内容,同时我们还将为您解释建立一个html的相关知识,另外,我们还将为您提供关于.net–获取每个HTML表行的第一个和第二个单元
本文将带您了解关于创建一个HTML表,其中每个TR都是一个FORM的新内容,同时我们还将为您解释建立一个html的相关知识,另外,我们还将为您提供关于.net – 获取每个HTML表行的第一个和第二个单元格、024 如何让html引用公共的头部和尾部(多个html文件公用一个header.html和footer.html)、2023-04-13:给定一个字符串数组strs,其中每个字符串都是小写字母组成的, 如果i < j,并且strs[i]和strs[j]所有的字符随意去排列能组成回文串, 那么说(i,j)叫做一个互补、asp.net – 如何创建一个HTML Helper来扩展TextBoxFor()以添加CSS样式?的实用信息。
本文目录一览:- 创建一个HTML表,其中每个TR都是一个FORM(建立一个html)
- .net – 获取每个HTML表行的第一个和第二个单元格
- 024 如何让html引用公共的头部和尾部(多个html文件公用一个header.html和footer.html)
- 2023-04-13:给定一个字符串数组strs,其中每个字符串都是小写字母组成的, 如果i < j,并且strs[i]和strs[j]所有的字符随意去排列能组成回文串, 那么说(i,j)叫做一个互补
- asp.net – 如何创建一个HTML Helper来扩展TextBoxFor()以添加CSS样式?
创建一个HTML表,其中每个TR都是一个FORM(建立一个html)
我正在尝试创建一个表格,其中每一行都是一个表格。我希望每个输入都在不同的表分区中,但是例如,我仍然需要所有所有第一个输入都属于同一个表头,依此类推。
我想做的是一个可编辑的网格 ,或多或少这样:
<table> <tr> <form method="POST" action="whatever"> <td><input type="text"/></td> <td><input type="text"/></td> </form> </tr> <tr> <form method="POST" action="whatever"> <td><input type="text"/></td> <td><input type="text"/></td> </form> </tr></table>
但是显然我不能以这种方式排列标签(或者w3c验证程序所说的也是如此)。
有什么好办法吗?
答案1
小编典典如果你想要一个“编辑网格”,即像结构的表格,可以让你做任何行的形式,使用CSS,模仿表标签的布局:display:table
,display:table-row
,和display:table-cell
。
无需将整个表格包装成表格,也无需为表格的每个明显行创建单独的表格和表格。
尝试以下方法:
<style>DIV.table { display:table;}FORM.tr, DIV.tr{ display:table-row;}SPAN.td{ display:table-cell;}</style>...<div> <formmethod="post" action="blah.html"> <span><input type="text"/></span> <span><input type="text"/></span> </form> <div> <span>(cell data)</span> <span>(cell data)</span> </div> ...</div>
将整个TABLE封装在FORM中的问题在于,所有表单元素都将在提交时发送(也许是所希望的,但可能不是)。该方法允许您为每个“行”定义一个表单,并在提交时仅发送该行数据。
将FORM标记包裹在TR标记周围(或将TR包裹在FORM周围)的问题在于它是无效的HTML。FORM仍将允许照常提交,但此时DOM已损坏。注意:尝试使用JavaScript获取FORM或TR的子元素,这可能会导致意外结果。
请注意,IE7不支持以下CSS表格样式,并且IE8需要一个doctype声明才能使其进入“标准”模式:(尝试使用此方法或等效方法)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
支持display:table,display:table-row和display:table-
cell的任何其他浏览器都应像使用TABLE,TR和TD标记时一样显示CSS数据表。他们大多数都这样做。
请注意,你也可以模仿THEAD,TBODY,通过包装与另一个DIV你行组TFOOT display: table-header-group
,table-row-group
和table-footer-group
分别。
注意: 使用此方法不能做的唯一事情就是colspan。
.net – 获取每个HTML表行的第一个和第二个单元格
foreach (HtmlNode row in ContentNode.SelectNodes("descendant::tr")) { //Do something to first cell //Do something to second cell }
有更多的细胞,每个细胞需要一些专门的治疗.我想有一种方法可以使用XPath来做到这一点,但我对此毫无用处.可能有类似的东西
var cell1 = row.SelectSingleNode("descendant::td:first");
解决方法
// from row var firstCell = row.SelectSingleNode("td[1]"); // each first cell in a table (note: tbody is not always there) var allFirstCells = table.SelectNodes("tbody/tr/td[1]");
换句话说,使用方括号和您要选择的单元格编号.一个例外是最后一个单元格,您可以使用last()获取如下:
// from row var lastCell = row.SelectSingleNode("td[last()]"); // each last cell in a table var allLastCells = table.SelectNodes("tbody/tr/td[last()]");
如果要将单元格放在当前单元格旁边,可以执行以下操作:
// from row var firstCell = row.SelectSingleNode("td[1]"); var siblingCell = firstCell.SelectSingleNode("./following-sibling::td");
您可能希望检查null的返回值,这意味着您要么输入错误,要么加载的DOM树不包含您要求的单元格.
024 如何让html引用公共的头部和尾部(多个html文件公用一个header.html和footer.html)
前端静态html页面,封装公共的头文件(header:顶部页眉,顶部导航栏等部分)和尾部文件(footer:CopyRight、友情链接等部分)
当前方法:通过load()函数,引入公共头部和尾部文件;
本文案例:引入通用的侧边栏
案例结构图:
侧边栏对应的html文件代码:
<aside class="main-sidebar">
<!-- sidebar: style can be found in sidebar.less -->
<section class="sidebar">
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu">
<li class="header">功能列表</li>
<!-- 菜单 -->
<li class="treeview">
<a href="#">
<i class="fa fa-folder"></i> <span>用户管理模块</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li id="admin-login">
<a href="all-admin-login.html">
<i class="fa fa-circle-o"></i> 权限修改
</a>
</li>
<li id="admin-register">
<a href="all-admin-register.html">
<i class="fa fa-circle-o"></i> 密码修改
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-pie-chart"></i> <span>数据库管理模块</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li id="charts-chartjs">
<a href="all-charts-chartjs.html">
<i class="fa fa-circle-o"></i> 01 基本信息
</a>
</li>
<li id="charts-morris">
<a href="all-charts-morris.html">
<i class="fa fa-circle-o"></i> 02 尺寸检验
</a>
</li>
<li id="charts-flot">
<a href="all-charts-flot.html">
<i class="fa fa-circle-o"></i> 03 机械性能
</a>
</li>
<li id="charts-inline">
<a href="all-charts-inline.html">
<i class="fa fa-circle-o"></i> 04 化学成分
</a>
</li>
<li id="charts-manager">
<a href="all-charts-inline.html">
<i class="fa fa-circle-o"></i> 05 检测结果
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-laptop"></i> <span>质量证明书管理模块</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li id="elements-general">
<a href="all-elements-general.html">
<i class="fa fa-circle-o"></i> 标准 General
</a>
</li>
<li id="elements-icons">
<a href="all-elements-icons.html">
<i class="fa fa-circle-o"></i> 图标 Icons
</a>
</li>
<li id="elements-buttons">
<a href="all-elements-buttons.html">
<i class="fa fa-circle-o"></i> 按钮 Buttons
</a>
</li>
<li id="elements-sliders">
<a href="all-elements-sliders.html">
<i class="fa fa-circle-o"></i> 滑块 Sliders
</a>
</li>
<li id="elements-timeline">
<a href="all-elements-timeline.html">
<i class="fa fa-circle-o"></i> 时间线 Timeline
</a>
</li>
<li id="elements-modals">
<a href="all-elements-modals.html">
<i class="fa fa-circle-o"></i> 对话框样式 Modals
</a>
</li>
<li id="elements-widgets">
<a href="all-elements-widgets.html">
<i class="fa fa-circle-o"></i> 窗体小部件 widgets
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-edit"></i> <span>表单 Forms</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li id="form-general">
<a href="all-form-general.html">
<i class="fa fa-circle-o"></i> 基础表单元素
</a>
</li>
<li id="form-advanced">
<a href="all-form-advanced.html">
<i class="fa fa-circle-o"></i> 高级表单元素
</a>
</li>
<li id="form-editors">
<a href="all-form-editors.html">
<i class="fa fa-circle-o"></i> 编辑器
</a>
</li>
</ul>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-table"></i> <span>表格 tables</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li id="tables-simple">
<a href="all-tables-simple.html">
<i class="fa fa-circle-o"></i> 简单表格
</a>
</li>
<li id="tables-data">
<a href="all-tables-data.html">
<i class="fa fa-circle-o"></i> 数据表格
</a>
</li>
</ul>
</li>
</ul>
</section>
<!-- /.sidebar -->
</aside>
部分截图:
要引入侧边栏的html文件中添加如下代码:
在相应的位置添加侧边栏代码:
<script>
$(function(){
/*公共部分
* 导航栏
* footer CopyRight
*/
$(".adminsidebar").load("adminsidebar.html");
});
</script>
效果图:
2023-04-13:给定一个字符串数组strs,其中每个字符串都是小写字母组成的, 如果i < j,并且strs[i]和strs[j]所有的字符随意去排列能组成回文串, 那么说(i,j)叫做一个互补
2023-04-13:给定一个字符串数组strs,其中每个字符串都是小写字母组成的, 如果i < j,并且strs[i]和strs[j]所有的字符随意去排列能组成回文串, 那么说(i,j)叫做一个互补对(complementary)。 求strs中有多少个互补对。 strs长度 <= 3 * 10^5, 单个字符串长度 <= 10^5, strs里所有字符串总长度 <= 10^6。 来自亚马逊。
答案2023-04-13:
这道题有两种算法:
算法一
该算法使用暴力方法,时间复杂度为 O(N^2*M),其中,N 表示字符串数组的长度,M 表示单个字符串的平均长度。空间复杂度为 O(1)。
算法过程如下:
- 遍历每对字符串(i,j),其中 i<j。
- 判断字符串 strs[i] 和 strs[j] 是否可以组成回文串。
- 如果可以组成回文串,则互补对数加一。
判断字符串是否可以组成回文串的过程如下:
- 统计字符串中每个字符出现的次数。
- 如果某个字符出现了奇数次,则不能组成回文串,返回 false。
- 如果所有字符都出现了偶数次,或只有一个字符出现了奇数次,则可以组成回文串,返回 true。
算法二
基于状态压缩的哈希表方法,通常也称为“状态压缩 + 哈希表”算法。该算法可以有效地避免枚举所有可能的字符串排列组合,从而实现了较优的时间复杂度。
该算法时间复杂度为 O(N*M),其中,N 表示字符串数组的长度,M 表示单个字符串的平均长度。空间复杂度为 O(N)。其中,空间复杂度主要来自于 status 哈希表的存储。
算法过程如下:
- 初始化 hash map status,用于统计每种状态下的字符串数量。
- 遍历每个字符串 str。
- 计算字符串 str 的状态 cur,即将字符串中每个字符对应的二进制位取反后进行异或操作得到的结果。
- 将 status 中 cur 对应的字符串数量加到答案 ans 上。
- 遍历每个字符 ch,将 cur 取反后在第 ch 位上的值,即 (cur ^ (1 << ch)),对应的字符串数量加到答案 ans 上。
- 将 cur 加入 status 中。
计算状态 cur 的过程如下:
- 初始化变量 cur 为 0。
- 遍历字符串 str 中的每个字符 ch。
- 将 ch 对应的二进制位取反,即 (1 << (ch as usize - ''a'' as usize))。
- 将上一步得到的结果与 cur 进行异或操作。
补充说明:该算法的思路是通过统计字符串中每个字符出现的奇偶次数,将字符串转化成一个状态值。如果两个字符串可以组成互补对,那么它们的状态值必须相同或者只有一位不同。因此,我们遍历所有字符串,用 hash map 统计每种状态值的出现次数,并统计能够产生互补对的字符串数量。
rust完整代码如下:
use std::collections::HashMap;
// 暴力方法
// 时间复杂度O(N^2 * M),N字符串长,M字符串平均长度
fn num1(strs: &[String]) -> usize {
let mut ans = 0;
for i in 0..strs.len() {
for j in (i + 1)..strs.len() {
if complementary(&strs[i], &strs[j]) {
ans += 1;
}
}
}
ans
}
fn complementary(a: &str, b: &str) -> bool {
let mut cnt: [usize; 26] = [0; 26];
for ch in a.chars() {
let idx = ch as usize - ''a'' as usize;
cnt[idx] += 1;
}
for ch in b.chars() {
let idx = ch as usize - ''a'' as usize;
cnt[idx] += 1;
}
let odd = cnt.iter().filter(|&&num| num % 2 != 0).count();
odd < 2
}
// 正式方法
// O(N*M),N字符串长,M字符串平均长度
// 时间复杂度O(N) + O(M),一共有多少个字符串N,一共有多少字符M
fn num2(strs: &[String]) -> usize {
let mut status: HashMap<usize, usize> = HashMap::new();
let mut ans = 0;
for str in strs {
let cur = str
.chars()
.fold(0, |acc, ch| acc ^ (1 << (ch as usize - ''a'' as usize)));
ans += status.get(&cur).unwrap_or(&0);
for i in 0..26 {
ans += status.get(&(cur ^ (1 << i))).unwrap_or(&0);
}
status.entry(cur).and_modify(|cnt| *cnt += 1).or_insert(1);
}
ans
}
// 为了验证
fn random_string_array(n: usize, m: usize, r: usize) -> Vec<String> {
let mut ans = vec![];
for _ in 0..n {
let len = rand::random::<usize>() % m + 1;
let mut str = String::new();
for _ in 0..len {
let ch = rand::random::<usize>() % r + ''a'' as usize;
str.push(ch as u8 as char);
}
ans.push(str);
}
ans
}
fn main() {
const N: usize = 100;
const M: usize = 20;
const R: usize = 5;
const TEST_TIME: usize = 5000;
println!("测试开始");
for _ in 0..TEST_TIME {
let n = rand::random::<usize>() % N + 1;
let strs = random_string_array(n, M, R);
let ans1 = num1(&strs);
let ans2 = num2(&strs);
if ans1 != ans2 {
println!("出错了!");
}
}
println!("测试结束");
}
asp.net – 如何创建一个HTML Helper来扩展TextBoxFor()以添加CSS样式?
@Html.TextBoxFor(model => model.FirstName,new { @})
解决方法
public static System.Web.Mvc.MvcHtmlString DtxTextBoxFor<TModel,TValue> (this System.Web.Mvc.HtmlHelper<TModel> html,System.Linq.Expressions.Expression<System.Func<TModel,TValue>> expression,System.Collections.Generic.IDictionary<string,object> htmlAttributes = null,bool readOnly = false) { if (htmlAttributes == null) { htmlAttributes = new System.Collections.Generic.Dictionary<string,object>(); } System.Web.Mvc.ModelMetadata oModelMetadata = System.Web.Mvc.ModelMetadata.FromLambdaExpression(expression,html.ViewData); if (oModelMetadata == null) { if (readOnly) { if (htmlAttributes.ContainsKey("readonly") == false) { htmlAttributes.Add("readonly","read-only"); } } } else { if (htmlAttributes.ContainsKey("placeholder") == false) { string strHtmlFieldName = System.Web.Mvc.ExpressionHelper.GetExpressionText(expression); string strLabelText = oModelMetadata.displayName ?? oModelMetadata.PropertyName ?? strHtmlFieldName.Split('.').Last(); if (string.IsNullOrEmpty(strLabelText) == false) { htmlAttributes.Add("placeholder",strLabelText); } } if ((readOnly) || (oModelMetadata.IsReadOnly)) { if (htmlAttributes.ContainsKey("readonly") == false) { htmlAttributes.Add("readonly","read-only"); } } } htmlAttributes.Add("class","form-control"); System.Linq.Expressions.MemberExpression oMemberExpression = expression.Body as System.Linq.Expressions.MemberExpression; if (oMemberExpression != null) { System.ComponentModel.DataAnnotations.StringLengthAttribute oStringLengthAttribute = oMemberExpression.Member.GetCustomAttributes (typeof(System.ComponentModel.DataAnnotations.StringLengthAttribute),false) .FirstOrDefault() as System.ComponentModel.DataAnnotations.StringLengthAttribute; if (oStringLengthAttribute != null) { if (htmlAttributes.ContainsKey("maxlength") == false) { htmlAttributes.Add("maxlength",oStringLengthAttribute.MaximumLength); } } } return (html.TextBoxFor(expression,htmlAttributes)); }
关于创建一个HTML表,其中每个TR都是一个FORM和建立一个html的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.net – 获取每个HTML表行的第一个和第二个单元格、024 如何让html引用公共的头部和尾部(多个html文件公用一个header.html和footer.html)、2023-04-13:给定一个字符串数组strs,其中每个字符串都是小写字母组成的, 如果i < j,并且strs[i]和strs[j]所有的字符随意去排列能组成回文串, 那么说(i,j)叫做一个互补、asp.net – 如何创建一个HTML Helper来扩展TextBoxFor()以添加CSS样式?等相关知识的信息别忘了在本站进行查找喔。
本文标签: