0
<input type="text" id="motto" name="motto" value="">

与其写这么长,我可以有一些nameid="motto"吗?
如何在 javascript 中执行此操作?我以前一直在用 php 中的一个函数来做这个,只是好奇是否有可用的 javascript 解决方案。

4

3 回答 3

3

nameidHTML 规范中没有定义这样的参数。因此,虽然您可以使用 javascript 实现这一点,但您首先会得到损坏的 HTML。我不建议你走那条路,但如果你决定违背我的建议并渲染损坏的标记,你可以用 jQuery 做:

$(function() {
    $('input').each(function() {
        var nameid = $(this).attr('nameid');
        $(this).attr('id', nameid).attr('name', nameid);
        $(this).removeAttr('nameid');
    });
});
于 2013-02-24T16:53:40.833 回答
1

你的意思是在HTML中有一个nameid属性并在页面加载时用JavaScript修复它?

Array.prototype.forEach.call( // for each
    document.querySelectorAll(*[nameid]), // element with this attribute
    function (e) { // do
        var v = e.getAttribute('nameid'); // get the value
        e.setAttribute('id', v); // set id
        e.setAttribute('name', v); // set name
        e.removeAttribute('nameid'); // remove it
    }
);

您应该知道任何具有此nameid属性的 HTML 都是无效的。

于 2013-02-24T16:54:45.993 回答
0

只需设置 ID,您可以将其放入您的 javascript 中以将名称设置为相同:

$('input[id]').each(function() { $(this).attr("name", this.id); });
于 2013-02-24T16:55:47.177 回答