0

私は最近、自分のページにかなりの量の JavaScript を追加してきましたが、すべて古典的なズボンのように学んでいます。自分のページで何かを実行したいときは、必要な結果が得られるまでググって実験します。

私のページには、アクティブ化/非アクティブ化、非表示、表示などのオブジェクトが頻繁に含まれていますが、JavaScript の厳密な紹介を見逃していたため、これらの名前がどのように付けられているのかわかりません。オブジェクトの完全修飾名が表示されることを期待して、firebug を開いた状態でオブジェクトをクリックしますが、喜びはありません。form.button.value="something" のようなことを実行できる必要があり、そのオブジェクトの名前を知る必要があります。

何か案は?

ありがとう。

4

5 に答える 5

1

要素は通常、id属性を使用して識別されます。例:

<input type="submit" id="saveButton" value="Save" />

メソッドを使用しgetElementByIdて、要素への参照を取得できます。

var b = document.getElementById('saveButton');
b.value = 'Saving...';
于 2009-11-25T23:31:49.147 に答える
1

例を挙げたので、form.button.value="something"HTML オブジェクトを制御したいと思います。<form id="my_form"... などのように ID を割り当てることができます。その後、関数 getElementById() が呼び出されるため、JS から ID で要素を取得できます。

document.getElementById('my_form').button.value = 'something';
于 2009-11-25T23:32:50.047 に答える
1

Javascript コードを実行している間、現在のスコープにすべてのローカル変数があるため、次のコードがあるとします。

var myObject = New Object();
myObject.Person = New Object();
myObject.Person.Name = "Mark";
myObject.Person.Gender = "Male";
myObject.Name = "object1";

... ルート オブジェクトは myObject になり、ドット表記で子孫オブジェクトを参照します。

ただし、ブラウザーでの DOM の実装のおかげで、キーワードwindowを介してオブジェクトも継承します。this実際、this単純な状況、つまりクロージャーを使用していない場合は、キーワードを省略できます。したがって、関数名を使用するだけで、最上位の Javascript 関数にアクセスできます。

特定の要素にアクセスしたい場合は、DOM を学ぶ必要があり、提案した構文 (1990 年代の Javascript のように聞こえます) を使用しないでください。知っておく必要があるルート要素は、プロパティHTMLDocumentを介してアクセスされるオブジェクトです。document 要素のメソッドを使用して、document特定のId( ではないName) 属性を持つ要素を検出できます。getElementByIdもちろん、要素に最初から一意の ID を指定しておくと役立ちます。コレクションを再帰的に使用して、childNodes必要なものが見つかるまで要素を手動で反復処理することもできます。または、本当に Id を提供できない場合はgetElementsByTagName、DOM のすべての要素に関連付けられているメソッドを使用することもできます。

例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
    <TITLE></TITLE>
    <META NAME="Generator" CONTENT="TextPad 4.6">
    <META NAME="Author" CONTENT="?">
    <META NAME="Keywords" CONTENT="?">
    <META NAME="Description" CONTENT="?">
    <SCRIPT LANGUAGE="Javascript">
        <!--

        function DoSummat()
        {
            var divInside = document.getElementById("Inside");
            divInside.textContent = "This text will appear inside.";
        }

        //-->
    </SCRIPT>
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">
<FORM>
    <INPUT TYPE="BUTTON" onclick="DoSummat();" NAME="MyButton" VALUE="Press Me">
</FORM>
<DIV ID="Outside">
    <DIV ID="Middle">
        <DIV ID="Inside"></DIV>
    </DIV>
</DIV>
</BODY>
</HTML>
于 2009-11-26T00:09:51.103 に答える
0

あなたの質問は非常に曖昧なので、私はあなたに必要な答えを与えることができません。

Object■「アクティブ化」/「非アクティブ化」することはできず、「名前」もありません(つまり、nameプロパティを持つことができます)。

たとえば、次のようになります。

var foo = {};

fooたまたまオブジェクトである値を持つ変数です。オブジェクトは変数ではありません(「名前」を持つオブジェクト)。与えられた:

bar = foo; foo = null;

fooこれnullで、fooが保持していたオブジェクトが。として保存されbarます。

于 2009-11-25T23:25:56.230 に答える
0

あなたはそれをすることができなくなります。変数名は変数に関連付けられておらず、関数間で受け渡されません。最善の方法は、文字列を取得して変数に戻す関数を作成することです。

function printVar(name) {
    console.log(name + ": " + window[name]);
}

もちろん、これには多くの問題があります。2回のロギング呼び出しを行うことをお勧めします。

console.log("foo");
console.log(foo);

または、printfスタイルの構文を使用します。

console.log("foo: %o", foo);
于 2009-11-25T23:30:18.210 に答える