Javascript 是有",;“价值”;属性作为一个隐藏值进行正确的操作

Javascript 是有",;“价值”;属性作为一个隐藏值进行正确的操作,javascript,jquery,html,Javascript,Jquery,Html,据我所知,value被用作HTML输入属性 <form action="form_action.asp" method="get"> <input type="submit" value="Submit form" /> </form> 然而,我想知道,我可以在其他HTML属性中使用它作为隐藏值,这是正确的做法吗 例如,对于每个表行,我想用一个唯一的ID标记它,作为SQL数据库中的唯一ID。但是,同时,我还想对最终用户隐藏唯一的ID 这是我一直在使用

据我所知,
value
被用作HTML输入属性

<form action="form_action.asp" method="get">
  <input type="submit" value="Submit form" />
</form>

然而,我想知道,我可以在其他HTML属性中使用它作为隐藏值,这是正确的做法吗

例如,对于每个表行,我想用一个唯一的ID标记它,作为SQL数据库中的唯一ID。但是,同时,我还想对最终用户隐藏唯一的ID

这是我一直在使用的技术

<html>
<head>
<title>
XXX
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

<script type="text/javascript">
 $(document).ready(function() {
    $('.delete-button').click(function() {
        var clicked = $(this);
        alert(clicked.parent('tr').attr('value'));
    });    
 });
</script>

</head>
<body>

<table style="border-style:none">
    <tbody>
        <tr>
            <th>Server Name</th>
            <th>IP Address</th>
        </tr>
        <tr style="border-style:none" value="ROW ID 1">
            <td class="edit">Yahoo Server</td>
            <td class="edit">196.168.0.1</td>
            <td class = "delete-button" style="border-style:none"><a href="">DELETE</a></td>
        </tr>
        <tr style="border-style:none" value="ROW ID 2">     
            <td class="edit">Google Server</td>
            <td class="edit">196.168.0.2</td>
            <td class = "delete-button" style="border-style:none"><a href="">DELETE</a></td>
        </tr>
    </tbody>
</table>

</body>
</html>

XXX
$(文档).ready(函数(){
$('.delete按钮')。单击(函数(){
var clicked=$(这个);
警报(单击.parent('tr').attr('value'));
});    
});
服务器名
IP地址
雅虎服务器
196.168.0.1
谷歌服务器
196.168.0.2

由于我不经常使用HTML和JavaScript,我想知道,上述技术是否正确且常用?

对于严格的HTML4/XHTML,您不应该在标记上创建任意属性。可以,但它对架构无效

对于HTML5,最佳实践是使用

例如


雅虎服务器
196.168.0.1

我建议使用属性,而不是使用值。JQuery支持属性,这是一种非常常见的做法。

初始化时,您可以设置所有属性,然后您可以拥有自己的自定义属性来读取以前设置的值(然后可以映射到字典或类似的内容)


这有用吗?

否。在本例中,值是表单组件。 您只需使用id=“ROW id 2”或任何值即可-

alert(clicked.parent('tr').attr('id'));

而且,这个html非常陈旧。这只是我的观点,不能被认为是一句刻薄的评论,但对html5和css3的良好回顾将是有益的。

你肯定。。。你可以用。。。您甚至可以拥有自己的自定义属性来携带数据,这些数据将永远不会显示给最终用户,除非在源代码视图中。。样本如下:

<tr style="border-style:none" mydata="ROW ID 2">  and it can be accessed as ('tr').attr('mydata')
并且它可以作为('tr').attr('mydata')访问

是的,您可以使用您想要的任何属性名称

<tr style="border-style:none" rowid="1">
或者,如果您有一行并想知道它的id:

var rowid = $(this).attr('rowid');

再加上。。。使用数据属性存储数据没有什么错,这就是它们的用途。但是你必须意识到你不能相信你发送的信息。你说你在上面放了数据库唯一的ID。。。如果有人对其进行编辑,如果他们操纵了ID呢?你需要确保你能恰当地处理这件事,比如确保他们有权这么做,或者你做了什么。他们可能会向您发送任何ID。所有好的建议数据都不应该绑定到演示文稿。在小范围内这样做很方便,但应该避免。@InfinitiesLoop是非常正确的,始终检查浏览器中使用的任何数据,尤其是以某种容量发送回来的数据-因为浏览器中的任何数据都不能安全地进行操作。-1。请不要鼓励使用非标准属性或DOM属性。在HTML4中可以使用class属性,在HTML5中也可以使用data-attributes。+1我一直使用非标准属性,它从来没有引起任何问题。@jchavannes:某些“从来没有引起任何问题”的事实本身并不意味着它是可取的,也不意味着它是最佳实践。大多数浏览器容忍无效数据,有时是以一种有用的方式,但这并不意味着您应该故意提供这些数据。@jchavannes-不同的浏览器对待非标准属性的方式不同。如果某个属性恰好与加载页面的任何浏览器(现在或将来)中的DOM或主机属性同名,则用户将遇到问题。HTML5引入了一系列新的属性,也不推荐使用一些属性。非标准属性有很多替代品,考虑到已知和潜在的未来问题,没有很好的理由使用它们。e、 g.您提出了一个很好的观点,将来选择与DOM或主机属性相对应的名称是有风险的,而“data-”是防止这种情况发生的最佳方法。然而,HTML4已经10年了,HTML5还没有被完全采用,所以我怀疑他们会很快添加“mydata”或“rowid”。
value
是一个属性。如前所述,这是名为“价值”意见的属性。使用带或不带css的表格html已经逐渐消失。当然,这取决于具体情况。在某些情况下,数据矩阵更容易与表格一起显示,但不是必需的。我之所以这样说,是因为我所在的公司将其作为一个标准,除非有必要,否则永远不要写低于当前标准的html,比如必须使用html4的时事通讯。大多数客户甚至在提案提纲中写道,html遵循最新、最高的标准,今天的标准指向html5,但不一定说如果不是html5,所有代码都很糟糕。比如说,我根本不在乎人们选择如何处理他们的代码。我的座右铭一直是——如果它有效,那么谁在乎它是如何制作的。但是——从“专业”的角度来看——我试图抛弃的另一个术语——表格html只会让下一个程序员生气,如果客户注意到并打电话给你,它可能意味着重做整个网站。我们在谷歌I/O工作的时候,一个实习生碰巧在这里。纠正这个问题花费了我们大约10000工时。@Orbling-我想这正是我发表评论的人的事情,但我并不是为了争论而为“div”而战。或者我根本不想争论。这只是说“DIV”标记——或任何人想称之为“DIV”的标记——的创建是有原因的,而且它进展得很好,得到了极大的支持,毫无疑问,对每个人来说都更容易使用。@Kai Qing:表是表格式数据的正确用法,它们一直是,现在仍然是-
$('tr[rowid=1]');
var rowid = $(this).attr('rowid');