2016-03-31 7 views
0

Schaltfläche Erstellen und sein Wert in Javascript

$(document).ready(function() { 
 
    $("#getDevicesButton").click(getContactList); 
 
    //$("#getDeviceResourcesButton").click(getDeviceResources); 
 
}); 
 

 
function onDeviceReady() { 
 
    getContactList(); 
 
    getDeviceResources(); 
 
} 
 

 
function getDeviceResources(value) { 
 
    alert("getDeviceResources clicked, value passed " + value); 
 
} 
 

 
function getContactList() { 
 
    $.ajax({ 
 
    url: "https://api.connector.mbed.com/endpoints/", 
 
    dataType: "json", 
 
    type: "GET", 
 
    headers: { 
 
     "Authorization": "Bearer <removed>" 
 
    }, 
 
    cache: false, 
 
    error: function(xhr, ajaxOptions, thrownError) { 
 
     debugger; 
 
     alert(xhr.statusText); 
 
     alert(thrownError); 
 
    }, 
 
    success: function(json) { 
 
     for (var i in json) { 
 
     $('#deviceList').append('Device #' + (i) + ': <br/> name: ' + json[i].name + '<br/> type: ' + json[i].type + '<br/> <button id=getDeviceResourcesButton onclick=getDeviceResources(' + i + ')>Get Device Resources</button>'); 
 
     } 
 
    } 
 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<body> 
 
    <h3>Device List</h3> 
 
    <button id="getDevicesButton">Get Devices</button> 
 
    <ul id="deviceList"></ul> 
 
</body>

Innerhalb einer Javascript-Funktion, ich habe ein JSON Ergebnis namens json. ich iterieren wie dies durch:

for (var i in json) 
{ 
    $('#deviceList').append('Device #' +(i)+ ': <br/> name: ' + json[i].name + '<br/> type: ' + json[i].type + '<br/> <button id=getDeviceResourcesButton onclick=getDeviceResources('+i+')>Get Device Resources</button>'); 
} 

derzeit getDeviceResources definiert als

function getDeviceResources(value) 
{ 
    alert("getDeviceResources clicked, value passed "+value); 
} 

Mein Problem - wie es ist, ich einen Alarm w/dem erwarteten Wert, aber wenn ich ändern +i+ zu +json[i].name+ Ich bekomme nicht einmal eine Warnung.

Irgendeine Idee was vermisse ich?

Danke,

+0

"Irgendeine Idee, was vermisse ich?" - Wahrscheinlich eine Fehlermeldung, die Ihren Code vor der Anzeige der Warnung abbricht. Prüfen sie ihre Konsole. – Amadan

+0

(1) Verwenden Sie nicht "alert" zum Debuggen, verwenden Sie 'console.log' und den JavaScript-Debugger. Weitere Informationen finden Sie in den [Chrome DevTools-Tipps] (https://developers.google.com/web/tools/chrome-devtools/?hl=de). Andere Browser haben ähnliche Entwicklungstools. (2) Niemand kann sagen, was an diesem Code-Extrakt falsch ist. Veröffentlichen Sie ein vollständiges ausführbares Beispiel, entweder als [Stack Overflow-Code-Snippet] (https://blog.stackoverflow.com/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/) oder als [ Geige] (https://jsfiddle.net/). –

+0

Danke für Ihre Kommentare, Code hinzugefügt. – ranshe

Antwort

0

Sie passieren nicht json[i].name als String an die Funktion. Im Fall von i wirft es keinen Fehler, weil es eine ganze Zahl ist. Here ist eine Geige, um das Gleiche zu demonstrieren.

function getDeviceResources(value) 
{ 
    alert("getDeviceResources clicked, value passed "+value); 
} 
json = [ 
{name: "abc"}, 
{name: "bcd"} 
]; 
console.log(json); 
$(function(){ 
for (var i in json) 
{ 
    $('#deviceList').append('Device #' +(i)+ ': <br/> name: ' + json[i].name + '<br/> type: ' + json[i].type + '<br/> <button id=getDeviceResourcesButton onclick=getDeviceResources("'+json[i].name+'")>Get Device Resources</button>'); 
    } 
}); 
+0

Ich wusste, dass es so etwas sein musste .. Danke! – ranshe

Verwandte Themen