如何在Javascript

时间:2015-08-20 20:39:49

标签: javascript jquery

首先,我使用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函数的变量subcategorysetCategory()的值发送到saveHouse()函数。但是当我尝试在alert中显示值时,它显示两个变量的值都是“未定义”。请检查两个功能并解决我的问题。我不太了解javascript本地和全球范围。谢谢

3 个答案:

答案 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应该接收参数,否则categorysubcategory将继续未定义。

您可以通过致电:var cat = setCategory(<somevalue>, <othervalue>)来解决此问题。

如果您通过onClick事件调用setCategory(),则saveHouse()不会运行,因为它永远不会被调用。您可能想要重新考虑onClick事件。