首先,我使用onClick方法将值传递给setCategory。
<div class=\"Subcat\">Select Subcategory</div>
<div class=\"cont5\">
<div class=\"part10\" onClick=\"setCategory('Music','Music Album',this)\" > Music Album </div>
<div class=\"part10\" onClick=\"setCategory('Music','Music Channel',this)\"> Music Channel </div>
<div class=\"part10\" onClick=\"setCategory('Music','Music Award',this)\"> Music Award </div>
<div class=\"part10\" onClick=\"setCategory('Music','Music Chart',this)\"> Music Chart </div>
</div>
function setCategory(category,subcategory)
{
var category=category;
var subcategory=subcategory;
return {category:category,subcategory:subcategory};
};
function saveHouse( ){
var cat= setCategory();
var catg=cat.category;
var subcat= cat.subcategory;
alert(catg);
alert(subcat);
};
我想将category
函数的变量subcategory
和setCategory()
的值发送到saveHouse()
函数。但是当我尝试在alert中显示值时,它显示两个变量的值都是“未定义”。请检查两个功能并解决我的问题。我不太了解javascript本地和全球范围。谢谢
答案 0 :(得分:2)
setCategory
应该将对象放在全局变量中,而不是将其作为值返回。
var chosenCategory;
function setCategory(category,subcategory)
{
chosenCategory = {category:category,subcategory:subcategory};
};
function saveHouse( ){
if (chosenCategory) {
var catg = chosenCategory.category;
var subcat = chosenCategory.subcategory;
alert(catg);
alert(subcat);
} else {
alert("Please choose a category first");
};
答案 1 :(得分:0)
您在没有任何参数的情况下调用setCategory,因此在调用alert时调用undefined是正确的。
答案 2 :(得分:0)
setCategory
应该接收参数,否则category
和subcategory
将继续未定义。
您可以通过致电:var cat = setCategory(<somevalue>, <othervalue>)
来解决此问题。
如果您通过onClick事件调用setCategory()
,则saveHouse()
不会运行,因为它永远不会被调用。您可能想要重新考虑onClick事件。