Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript按钮在Chrome中不起作用_Javascript_Html_Internet Explorer_Google Chrome_Typeerror - Fatal编程技术网

Javascript按钮在Chrome中不起作用

Javascript按钮在Chrome中不起作用,javascript,html,internet-explorer,google-chrome,typeerror,Javascript,Html,Internet Explorer,Google Chrome,Typeerror,所以JS noob在这里,希望得到一些帮助。基本上我在这个网站上有这个调查。调查中每个问题的旁边都有一个小“?”按钮,用作帮助按钮。当用户点击它时,会打开一个小弹出窗口,进一步解释这个问题 这个按钮在IE 11中工作,但在Chrome中似乎不起作用。首先是javascript代码: <script language="javascript"> var sku_help = new Object(); function config_sku_help(){ var str =

所以JS noob在这里,希望得到一些帮助。基本上我在这个网站上有这个调查。调查中每个问题的旁边都有一个小“?”按钮,用作帮助按钮。当用户点击它时,会打开一个小弹出窗口,进一步解释这个问题

这个按钮在IE 11中工作,但在Chrome中似乎不起作用。首先是javascript代码:

<script language="javascript">

var sku_help = new Object();
function config_sku_help(){
    var str = '';
    document.write ('<iframe src="/scores_reports/custom/5252/manual_5252.htm" name="iframe_sku_help" id="iframe_sku_help" width=0 height=0></iframe>');
    document.write('<DIV ID="div_sku_help_win" style="position:absolute; top:10; left:10; border:2px solid black; background-color:#FFFFCC; z-index:10; display:none; padding:10px; filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=\'#FFFFCC\', EndColorStr=\'#EEEEBB\')"></DIV>');
} 

config_sku_help();
function render_help_links(){
    if (document.readyState != 'complete'){
        setTimeout('render_help_links()', 1000);
        return;
    }
    var target;
    var tables = document.getElementsByTagName('TABLE');

    for (var i = 0; i < tables.length; i++){
        var table = tables[i];
        var td = table.rows[0].cells[0];
        if (table.id.substring(0, 5) == 'SECT_'){
            target = table.id.replace(/SECT/, 'SID');
            add_help_links(table, target);
        }else{
            for (var j = 0; j < table.rows.length; j++){
                var row = table.rows[j];
                var td = table.rows[j].cells[0];
                if (td.id.substring(0, 4) == 'QID_'){
                    target = td.id;
                    add_help_links(table, target);
                }
            }
        }
    }
}

    function add_help_links(table, target){
        for (var i = 0; i < table.rows.length; i++){
            var cell = table.rows[i].cells[0];
            if (cell.id == target){
                cell.innerHTML = '<a href="javascript:show_sku_help(\'' + target + '\')"><img border=0 src=/images/help.gif></a> ' + cell.innerHTML;        
            }else if (cell.className == 'S_HEAD'){
                cell.innerHTML = '<a href="javascript:show_sku_help(\'' + target + '\')"><img border=0 src=/images/help.gif></a> ' + cell.innerHTML;        
            }
        }
}

function show_sku_help(target){
    var layout_width = 600; //preferred width of help popup
    target = target.toUpperCase();
    sku_help.help_win = document.getElementById('div_sku_help_win');
    var win = sku_help.help_win;
    win.style.width = layout_width;
    win.innerHTML = '';
    win.style.display = 'none';
    var iframe = document.frames['iframe_sku_help'];
    var src_div = iframe.document.getElementById(target);
    get_special_instructions(iframe, target, win);
    win.innerHTML += src_div.innerHTML + '<center><a href="javascript: close_sku_help_win()">close</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript: show_all_sku_manual()">manual</a></center>';
    win.style.left = (document.body.scrollWidth - layout_width) / 2;
    win.style.display = 'inline';
    force_vertical_position(win);
    function force_vertical_position(win){
        for (var i = 1; i < 5; i++){
            win.style.top = document.body.scrollTop + (screen.availHeight / 2) - (win.scrollHeight / 2);
        }
    }
    function get_special_instructions(iframe, target, win){
        if (target.indexOf('Q') < 0){return}// quit if is Domain level help
        divs = iframe.document.getElementsByTagName('DIV');
        for (var i = 0; i < divs.length; i++){
            if (divs[i].id.substring(0, 3) == 'SI_' && divs[i].id.indexOf(target) > -1){
                win.innerHTML += divs[i].innerHTML;
            }
        }
    }
}
function close_sku_help_win(){
    document.getElementById('div_sku_help_win').innerHTML = '';
    document.getElementById('div_sku_help_win').style.display = 'none';
}
function show_all_sku_manual(){
    var manual_win = window.open('/scores_reports/custom/5252/manual_5252.htm', 'sku_manual', 'scrollbars=yes')
    manual_win.focus();
}
setTimeout('render_help_links()', 1000);
</script>
这就导致我们

var iframe = document.frames['iframe_sku_help'];
那一行代码就是有错误的那一行。在这一点上,我被卡住了,因为我不知道这个错误的真正含义。任何帮助都将不胜感激


谢谢

据我所知,许多现代浏览器不支持
document.frames
(它不是当前HTML/JS规范的一部分)

请改为尝试
document.getElementsByName
,如下所示:

var iframe = document.getElementsByName('iframe_sku_help')[0];
请注意,我们必须采用零索引,因为
getElementsByName
生成具有指定名称的所有元素的数组(并且名称对于单个元素可能不是唯一的)。本例中为0,假设只有一个元素名为
iframe\u sku\u help

但是,早期版本的IE可能存在问题(请参阅)。因此,我将测试
document.frames
是否存在(就像在旧IE浏览器中一样),如果它不使用
getElementsByName
作为备份:

var iframe;
if (document.frames)
    iframe = document.frames['iframe_sku_help'];
else
    iframe = document.getElementsByName('iframe_sku_help')[0];

我还担心一般情况下对
getElementsByName
的支持。如果您发现这是一个问题,请尝试使用
document.getElementsByTagName('iframe')
并查看该列表。

据我所知
document.frames
仅在
IE
中工作

获取所有
iframes
的跨浏览器方式是给出iframes名称,然后使用
window.frames
属性。另一个选项是使用
document.getElementsByTagName
创建一个iframe数组。阅读更多关于它的信息

var iframe = document.getElementsByName('iframe_sku_help')[0];
var iframe;
if (document.frames)
    iframe = document.frames['iframe_sku_help'];
else
    iframe = document.getElementsByName('iframe_sku_help')[0];