我有一個JavaScript對象,我從JSONP文件收到。在JavaScript對象中查找屬性
該對象包含多個「選項」和「結果」,用於在用戶單擊時調整頁面上的html。
現在,我可以檢查在json文件中是否存在HTML字符串(通過json引用插入)。我想要做的是接受該字符串,在json文件中找到下一個「結果」或「選項」,然後返回「選項」或「結果」值,以便我可以使用它來更改html ...
我該怎麼做?我一直在嘗試使用.indexOf方法來查找當前索引,但這並不能幫助我找到像「選項」這樣的特定屬性。
這是我用來遍歷JSONP文件並查找當前字符串是否存在的代碼。
$.ajax({
url: "http://www.myurl.com/jsonp.php",
type: "GET",
dataType: "jsonp",
jsonpCallback: "otmjsonp",
async: false,
success: function (JSON) {
$(".result").on("click", function() {
var currentResult = $(this).text(); //.result is the line of HTML the user has clicked
for (var playerSelection in JSON) {
if (JSON.hasOwnProperty(playerSelection)) {
if (JSON[playerSelection] === currentResult) {
alert("this selection exists in the JSON");
}
}
}
})
}
});
這裏是大JSONP文件的一個非常簡單的版本:
otmjsonp({
"situation1" : "Your opponent is trying to tackle you", "playerPrompt1" : "What will you do first?",
"option1" : "avoid him",
"result1" : "he tackles you",
"situation2" : "you were tackled", "playerPrompt2" : "Your opponent begins to slow down",
"option2" : "chase after him",
"result2" : "you caught up",
)}
等等,等等
甚至模糊的想法/因爲我完全被卡住的方向,將不勝感激。
JSONP文件是否必須採用該格式?它看起來沒有結構化,這是什麼讓它很難。 –
'currentResult'超出範圍。你在一個函數中聲明它,這意味着它不能從外部訪問。你可能想把'var currentResult'這個語句放在更高的水平上。實際上,當我想到它時,您在成功函數中定義了單擊事件處理程序也有點奇怪。這有什麼理由嗎? – basilikum
@RaulMartins爲了嘗試和解決這個問題,我試圖儘可能簡化JSONP文件 - 它曾經有嵌套層次,現在一切都在一個層次上。你會建議什麼其他結構? –