使用HTML <input>标签时,使用name和id属性之间有什么区别,特别是我发现它们有时被命名为相同?
正如任何经验丰富的JavaScript开发人员所知,有很多(太多)方法可以做同样的事情.例如,假设您有一个文本字段,如下所示:
<form name="myForm">
<input type="text" name="foo" id="foo" />
Run Code Online (Sandbox Code Playgroud)
在JavaScript中有很多方法可以访问它:
[1] document.forms[0].elements[0];
[2] document.myForm.foo;
[3] document.getElementById('foo');
[4] document.getElementById('myForm').foo;
... and so on ...
Run Code Online (Sandbox Code Playgroud)
方法[1]和[3]在Mozilla Gecko文档中有详细记载,但都不是理想的.[1]过于笼统而无用,[3]同时需要id和名称(假设您将数据发布到服务器端语言).理想情况下,最好只有一个id属性或一个name属性(两者都有点多余,特别是如果id不是任何css所必需的,并且增加了拼写错误的可能性等).
[2]似乎是最直观的,它似乎被广泛使用,但我没有看到它在Gecko文档中引用,我担心向前兼容性和跨浏览器兼容性(当然我想成为尽可能符合标准).
那么这里最好的做法是什么?任何人都可以指出DOM文档或W3C规范中可以解决此问题的内容吗?
注意我对非库解决方案(jQuery/Prototype)特别感兴趣.
使用<div id="here" ...而不是使用是否有任何优势<div name="here" ...
它们都被称为#here?
为什么我需要表单元素的name和id属性<input>?
哪个用于POST数据发送,哪些可以排除?
除了我的简短研究告诉我后者将返回一个集合而不是一个单独的元素与ID传递的事实.
请考虑以下代码:
function validateAllFields()
{
var clientid = document.getElementById("clientid");
var programs = document.getElementById("programs");
var startmonth = document.getElementById("startmonth");
var startday = document.getElementById("startday");
var startyear = document.getElementById("startyear");
var completed = document.getElementsByName("completed");
var goals = document.getElementsByName("goals");
var errors = document.getElementById("errorMsg");
errors.innerHTML = "";
if(isNumeric(clientid, errors, "Please enter a valid client ID")){
if(madeSelection(programs, errors, "Please select a program from the drop-down list")){
if(madeSelection(startmonth, errors, "Please enter a month for the start date")){
if(madeSelection(startday, errors, "Please enter a day for the start date")){
if(madeSelection(startyear, errors, …Run Code Online (Sandbox Code Playgroud) var hours = document.getElementById("hrs").value; // Global variables declared
var mins = document.getElementById("min").value;
var seconds = document.getElementById("sec").value;
function random()
{
alert(hours);
alert(mins);
alert(seconds);
}
Run Code Online (Sandbox Code Playgroud)
输出结果与undefined所有3种情况一样.
我一直认为指定片段标识符的标准方法是<a name="foo"></a>.
<a href="#foo">go to foo</a>
<a name="foo"></a> <!-- obsolete method, it seems -->
<p>some content under that anchor with name</p>
Run Code Online (Sandbox Code Playgroud)
但似乎这是旧的方式,而新的方式是使用id,如下所示:
<a href="#bar">go to bar</a>
<p id="bar">some content under that p with id</p>
Run Code Online (Sandbox Code Playgroud)
事实上,W3C验证器说这个元素name已经过时了<a>.那么有两种方法可以跳转到片段标识符,但其中一种已经过时了?(那是什么时候发生的?)
(有大约之间的差异的其他问题id和name,但是这一个是关于片段标识符)
提交表单时,表单会同时查找“名称”和“ id”值吗?除了使用CSS设置样式外,“ id”还有什么作用?
<select name="combobox" id="combobox">
<option value="0">Inactive</option>
<option value="1">Active</option>
</select>
Run Code Online (Sandbox Code Playgroud) 我应该name仅将属性用于表单控件吗?今天在html5上弃用了吗?
我注意到类似的问题已经过时,所以我有些困惑。
我创建了一个帐户,所以我可以问这个问题:为什么post方法不能处理这些简单文件?
文件1上的代码:
<form method="POST" action="caralho.php">
<input type="text" id="titulo_cardapio" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
文件2,"caralho.php":
<?php
$crlh = $_POST['titulo_cardapio'];
echo $crlh;
?>
Run Code Online (Sandbox Code Playgroud)
这个简单的形式不会发布变量,当我加载"caralho.php"后,点击提交按钮后,会发生这种情况:
注意:未定义的索引:第2行的C:\ xampp\htdocs\cardapio\caralho.php中的titulo_cardapio
这是怎么回事?这让我疯了
所以我创建了一个有2个输入.用户可以输入用户名和文本框的文本框是他输入的密码.然后是PHP验证,如果Username的文本框为空,则给出错误消息或者如果文本中有文本,请查看文本是否仅包含数字.如果它没有再次给出错误消息.密码的PHP验证是相同的主体.顺便说一下,表单加载到与创建它的位置相同的页面.但由于某种原因,当它加载到broswer(加载正常)并在用户名文本字段中键入sybols并点击提交时,错误不会出现.我真的希望你们能发现问题因为这让我发疯了.
<!DOCTYPE html>
<html>
<head>
<style>
.error {
color: red;
}
</style>
<title>Register</title>
</head>
<body>
<form action="#" method="POST">
<h1 id="Signup">Sign Up</h1>
<input type="text" name="Username" placeholder="Please Enter a Username">
<span class="error"><? echo $errorusername;?></span>
<br>
<input type="password" name="Password" placeholder="Please Enter a Password">
<span class="error"><? echo $errorpass;?></span>
<br>
<input type="Submit" id ="Submit">
</form>
</body>
</html>
<?php
$errorpass = "";
$errorusername = "";
if (isset($_POST['Submit']))
{
if (empty($_POST['Username']))
{
$errorusername = "name is required";
}
else
{
$Username = $_POST['Username'];
if (!preg_match("/^[a-zA-Z ]*$/", $Username)) …Run Code Online (Sandbox Code Playgroud) html ×9
forms ×5
javascript ×3
php ×2
post ×2
coding-style ×1
dom ×1
html-input ×1
html5 ×1
validation ×1