JavaScript 表单焦点,我的代码看起来还好吗?

JavaScript form focus, does my code look okay?

提问人:Jeff 提问时间:8/23/2009 最后编辑:Jeff 更新时间:8/23/2009 访问量:131

问:

今天早上我问了一个关于我的 JS 语法的非常平凡的问题,有人建议我改用他们的代码,所以我继续这样做,因为我对 JS 的了解几乎为零。

利用我适度的PHP知识,我做了一个轻微的修改,添加了一个带有语句的第二个ID(见下文),只是想知道你们是否对JavaScript有更多了解,可以告诉我它是否看起来不错?'else if'

或者,也许你会完全以不同的方式做?

window.onload = formfocus;

function formfocus()
{
    var id_one;
    var id_two;

    id_one = document.getElementById( 'author' );
    id_two = document.getElementById( 's_primary' );

    if ( id_one )
    {
        id_one.focus();
        id_one.value = '';
    }
    else if ( id_two )
    {
        id_two.focus();
        id_two.value = '';
    }
}

编辑:我有点担心我的...但不确定是否有任何其他方法可以实现我想要的东西。window.onload = formfocus();

JavaScript的

评论


答:

-1赞 Cleiton 8/23/2009 #1

它看起来很好,可读性强,易于理解。

为了增加您对 javascript 语法的了解,您也可以做类似的事情:

function formfocus()
{
    var id_one;
    var id_two;

    id_one = document.getElementById( 'author' );
    id_two = document.getElementById( 's_primary' );

    with(id_one || id_two)
    {
        focus();
        value = '';
    }
}

*ps,我知道这个例子很丑陋(但我喜欢使用“with”LOL)。

评论

3赞 James 8/23/2009
请不要使用 with() ...这通常被视为一种不好的做法,因为任何不存在的属性访问都被认为是全局的。
0赞 Michael Koval 8/23/2009
虽然在这么短的片段中它并不重要,但“with”通常被认为是不好的做法。它强制 Javascript 解释器根据 id_one 或 id_two 范围内的函数检查块中的每个变量和函数调用。更不用说,在较大的脚本中会有很多歧义;例如,如果“value”也是一个全局变量。请参见:barryvan.com.au/2009/05/avoid-javascripts-with-keyword
3赞 Chris 8/23/2009 #2

它肯定可以更简洁,特别是如果你使用 jquery。但是假设你想坚持使用普通的旧javascript,我至少会更改以下内容:

var id_one;
var id_two;

id_one = document.getElementById( 'author' );
id_two = document.getElementById( 's_primary' );

var id_one = document.getElementById( 'author' );
var id_two = document.getElementById( 's_primary' );

此外,不用空格括住函数参数是相当标准的做法,但我认为这是一个风格问题,不应该在这里争论。

0赞 Michael Koval 8/23/2009 #3

虽然您的代码正常运行,但以下内容要少得多:

window.onload = function () {
    var id_one = document.getElementById("author");
    var id_two = document.getElementById("s_primary");

    // Original code...
}

如果您打算编写更多的 Javascript,请考虑一些事情。