我试图为Windows 8制作一个有两个输入框和一个按钮的测试应用程序(让我们调用它"计算"按钮)。当用户按下按钮时,他得到一个结果。他可以通过选择要在设置弹出窗口中使用的单位,以公制或英制单位输入其详细信息。现在我要做的就是立即提交更改。当用户选择例如英制单位时,输入框和结果自动变为英制。现在,当我将单位从公制更改为英制时,我必须按下"计算"按钮再次看到帝国的结果。 我怎么能这样做?
以下是我的一些代码。 在默认的.js文件中,我创建了一个按钮处理程序:
var test = document.getElementById("button");
test.addEventListener("click", doDemo, false);
在完成所有计算的主.js文件中,它看起来像这样:
function doDemo(eventInfo) {
var applicationData = Windows.Storage.ApplicationData.current;
var roamingSettings = applicationData.roamingSettings;
if (roamingSettings.values["cmorft"] == 'imperial') {
var greetingString3 = "Imperial";
document.getElementById("units").innerText = greetingString3;
} else {
var greetingString4 = "metric";
document.getElementById("units").innerText = greetingString4;
}
我使用以下内容保存用户的选择:
var applicationData = Windows.Storage.ApplicationData.current;
var roamingSettings = applicationData.roamingSettings;
WinJS.UI.Pages.define("/html/settings.html", {
// This function is called whenever a user navigates to this page. It
// populates the page elements with the app's data.
ready: function (element, options) {
var imperialRadio = document.getElementById("imperial"),
metricRadio = document.getElementById("metric");
// Set settings to existing values
if (roamingSettings.values.size > 0) {
if (roamingSettings.values["cmorft"]) {
setMIValue();
}
}
// Wire up on change events for settings controls
imperialRadio.onchange = function () {
roamingSettings.values["cmorft"] = getMIValue();
};
metricRadio.onchange = function () {
roamingSettings.values["cmorft"] = getMIValue();
};
},
unload: function () {
// Respond to navigations away from this page.
},
updateLayout: function (element, viewState, lastViewState) {
// Respond to changes in viewState.
}
答案 0 :(得分:1)
如果我理解正确,您只需在更改单位时设置HTML元素的innerText属性,而不仅仅是在单击按钮时。在您的演示中,它可以像在您的单选按钮的onchange处理程序中调用doDemo一样简单,因为它将读取更新的设置并设置文本。