JavaScript Geniuses,
所需的结果是“推荐”和“授权”,以显示是否选中了两个复选框中的任何一个。
/*For Checkbox1: Fund1 */
if (this.rawValue == "1") {
this.resolveNode("fund1").presence = "visible";
this.resolveNode("recommend").presence = "visible";
this.resolveNode("authorization").presence = "visible";
} else {
this.resolveNode("fund1").presence = "hidden";
this.resolveNode("recommend").presence = "hidden";
this.resolveNode("authorization").presence = "hidden";
}
/*For Checkbox2 - Fund2: */
if (this.rawValue == "1") {
this.resolveNode("fund2").presence = "visible";
this.resolveNode("recommend").presence = "visible";
this.resolveNode("authorization").presence = "visible";
} else {
this.resolveNode("fund2").presence = "hidden";
this.resolveNode("recommend").presence = "hidden";
this.resolveNode("authorization").presence = "hidden";
}
如果选中一个复选框,则可以看到所需的“推荐”和“授权”对象。如果我同时选中这两个复选框,则取消选中一个复选框,隐藏“推荐”和“授权”对象。其他基金的复选框对表单有不同的批准要求。
导致问题的原因是什么?什么能解决它?什么是编写代码的更简洁的方法?所有指导都表示赞赏。
答案 0 :(得分:0)
在那里你应该创建使对象可见和不可见的功能。这不是强制性的,但是这样的结构会减少愚蠢错误的数量(比如在“可见”这个词中遗漏一些字母等):
public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
CircleImageView bmImage;
public DownloadImage(ImageView bmImage) {
this.bmImage = (CircleImageView) bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.d("Error", e.getStackTrace().toString());
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
创建用于为授权和推荐对象设置所需状态的功能:
new DownloadImage(imgUserProfile).execute(userProfileUrl);
在CheckBox1调用方法的click事件中设置auth。和rec。州。并且还为Fund1对象设置可见性。
function setVisible(field){
if (field === null) {
//do what ever you want with an error
}
if (field === undefined) {
//do what ever you want with an error
}
if (field instanceof Array) {
//do what ever you want with an error
}
field.presence = "visible";
}
function setInvisible(field){
if (field === null) {
//do what ever you want with an error
}
if (field === undefined) {
//do what ever you want with an error
}
if (field instanceof Array) {
//do what ever you want with an error
}
field.presence = "invisible";
}
在CheckBox2调用方法的click事件中设置auth。和rec。州。并且还为Fund2对象设置可见性。
function setStateAuth(){
if(Page1.CheckBox1.rawValue == "1" || Page1.CheckBox2.rawValue == "1"){
setVisible(Page1.Authorization);
}else{
setInvisible(Page1.Authorization);
}
}
function setStateRec(){
if(Page1.CheckBox1.rawValue == "1" || Page1.CheckBox2.rawValue == "1"){
setVisible(Page1.Recommend);
}else{
setInvisible(Page1.Recommend);
}
}
请注意,建议不要使用“resolveNode”方法处理对象(由于性能问题)。因此,如果您有一个简洁而非动态的页面数量,那么最好将其命名为all并使用它们的名称引用它们。就像在样本中完成一样,我已经