为什么还是取不到值。。。

 <!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
        <script type="text/javascript" src="language.js"></script>
        <title></title>
    </head>

    <body>
        <button id="a1">中文</button>
        <a id="a2">香蕉</a>
        <a id="a3">苹果</a>
        <button id="a4">英文</button>
        <script>
            $("#a1").click(function() {
                cl(this);
            });
        </script>
        <script>
            $("#a4").click(function() {
                for(var i = 2; i <= 3; i++) {
                    var s = document.getElementById("a" + i).innerHTML;      

                    document.getElementById("a" + i).innerHTML = getjson(s);
                    //                  
                }

            });
        </script>


    </body>

</html>

function getjson(key) {
    var result = "";
    $.ajax({
        type: "get",
        url: "a2.json",
        contentType: "application/json; charset=utf-8",
        dataText: "jsonText",
        async: false,
        cache: false,
        dataType: "json",
        success: function(result) {
            //          alert(result);
            for(var item in result) {
                if(item == key) { //item 表示Json串中的属性,如'name'  
                    var jValue = result[item]; //key所对应的value  
                    return jValue;

                }
            }

        }
    });
}

把你想要的值赋给你定义的result然后返回 或者把你的赋值操作放到success里面。你这返回的是啥 你自己看看

function getjson(key) {
var result = "";
$.ajax({
type: "get",
url: "a2.json",
contentType: "application/json; charset=utf-8",
dataText: "jsonText",
async: false,
cache: false,
dataType: "json",
success: function(res) {
// alert(result);
for(var item in res) {
if(item == key) { //item 表示Json串中的属性,如'name'

result = result[res]; //key所对应的value

}
}

    }
});
    return result;

}

后面那里result = res[item] 打错了

少了jquery的构造器

<script>
$(function(){
// click事件拷贝进来
});
</script>

不知道你返回的是什么数据
但是jq for循环这种写法item是result的下标而不是Json串中的属性

解决问题的能力是一个人在编程这条路上的必须掌握的技能

解决思路:
1:排查是否是ajax跨域问题
success,alert,如果有对应值,则没问题,若没有可以参照网上的ajax跨域的解决方法

2:数据问题
返回的json字符串是否符合json标准,可以使用 JSON.parse(result);看是否能正确转为json对象。如有问题参照json标准修改数据直至正确
还有dataType: "json",//数据类型可以为 text xml json script jsonp,不部分都是用json,然后操作json对象,而不是json字符串

3:jquey使用问题
jquery一般用$.each, for( )一般是java中的使用习惯

4:在判断前输出比较的两个值,0 与 '0'是不一样的

5:数据输出到页面
可以将输出操作放到success中,防止异步问题,尽管你写了async: false,。

你这个return jValue; 应该只是推出了success的那个方法吧? 要return的话,应该是需要在外层保存一个变量,然后result = jValue;最后再return result;

你的key传过去了么

                    var dataObj = result;
                    $.each(dataObj, function (index, item) {
                                    if(item == key) { //item 表示Json串中的属性,如'name'  
                                                                                    var jValue = item; //key所对应的value  
                                                                                    return jValue;

                                                                        }
                    });

这样写循环试试

http://blog.csdn.net/qq_38005982/article/details/77847376 我自己写的你可以看看

你先学会怎么用debugger 会用debugger调试js 调试才是解决问题的最佳途径~ 也是学习进步的最快方法~ 不会调试 永远都是要靠猜~

出于安全考虑,浏览器是不允许直接访问本地文件js,需要搭建本地服务器,或者解除浏览器这一限制;
提问者自己也是新手,关键还坐等答案,自己不去调试,chrome浏览器f12错误写的明明白白。