質問

最近、かなり多くのjavascriptを自分のページに追加していますが、すべてを古典的なパンツのように学んでいます。自分のページで何かをしたいときは、希望する結果が得られるまでグーグルで試します。

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

アイデアはありますか?

ありがとう。

役に立ちましたか?

解決

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

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

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

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

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

例:

<!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>

他のヒント

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

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

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

var b = document.getElementById('saveButton');
b.value = 'Saving...';

さて、 form.button.value =&quot; something&quot; の例を挙げたので、HTMLオブジェクトを制御したいと思っています。それらにidを割り当てることができます。例:&lt; form id =&quot; my_form&quot; ...そして、関数がgetElementById()と呼ばれるように、JSからidで要素を取得します。

document.getElementById('my_form').button.value = 'something';

質問は非常に曖昧なので、必要な答えをお伝えできません。

オブジェクトは「有効化」/「無効化」できません。そして、彼らは「名前」を持っていません(つまり、 name プロパティを使用できます)。

たとえば、次の場合:

var foo = {};

foo は、オブジェクトである値を持つ変数です。オブジェクトは変数ではありません(「名前」を持つオブジェクト)。指定:

bar = foo; foo = null;

foo null になり、fooが保持したオブジェクトは bar として保存されるようになりました。

これを行うことはできません。変数名は変数に関連付けられておらず、関数間で渡されません。できる最善の方法は、文字列を取得して変数に解決する関数を作成することです。

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

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

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

または、printfスタイルの構文を使用:

console.log("foo: %o", foo);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top