0

なぜこれが機能するのか

app.prints(address,list.options[list.selectedIndex].value);

しかし、これはそうではありませんか?

app.prints(status,macAddress);

JavaScript

var hey = 5;
var app = {
    createList: function () {
        for (var i = 0; i < 5; i++) {
            list.options[i] = new Option(hey + i, "mac" + i);
        }
        app.prints(address, list.options[list.selectedIndex].value);
    },
    prints: function (location, message) {
        location.innerHTML = message;
    },
    manageConnection: function () {
        var macAddress = list.options[list.selectedIndex].value;
        app.prints(status, macAddress);
    }
}

HTML

<!DOCTYPE html>
<!-- Don't panic! All this 
    code looks intimidating but eventually it  will make sense. -->
<html lang="en">

<head>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script type="text/javascript" src="ECMA.js"></script>
    <title>My LCD code</title>
</head>

<body onload="app.initialize();">
    <p>Welcome to the LCD software</p>
    <select id="list" onchange="app.prints
    (address,list.options[list.selectedIndex].value);"></select>
    <div id="address"></div>
    <button id="connect" onclick="app.manageConnection();">Connect</button>
    <div id="status">hi</div>
</body>

</html>
4

1 に答える 1

2

違いは、ステータス バーのテキストを表すグローバルstatus変数がブラウザーによって既に定義されていることです。また、ブラウザーは、要素への参照がそれを置き換えることを許可しません。

名前の競合を避けるために、要素の名前を変更できます。

しかし、s の自動グローバルに依存するべきではありませんid。すべてのブラウザがこの機能を実装しているわけではなく、一部のブラウザは特定のモードでのみ実装されています。

var list = document.getElementById('list');
var address = document.getElementById('address');
app.prints(address, list.options[list.selectedIndex].value);
于 2013-11-07T02:12:05.857 に答える