a标签里的onclick()无法调用到对应的函数

zzzrrr1989 2014-09-22 02:03:25
以下是网页的部分源代码:

<div id="wrapper">
<div id="examples_outer">
<div id="slider_container_1">
<div id="SliderName">

<a onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" title="baidu"><img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="范宽.jpg"/></a>
</div>
<div class="c"></div>
<div id="SliderNameNavigation"></div>
<div class="c"></div>

<script type="text/javascript">
// we created new effect and called it 'demo01'. We use this name later.
Sliderman.effect({name: 'demo01', cols: 10, rows: 5, delay: 10, fade: true, order: 'straight_stairs'});
var demoSlider = Sliderman.slider({container: 'SliderName', width: document.documentElement.clientWidth, height: document.documentElement.clientHeight, effects: 'demo01',
display: {
pause: true, // slider pauses on mouseover
autoplay: 5000, // 3 seconds slideshow
always_show_loading: 200, // testing loading mode
description: {background: '#ffffff', opacity: 0.5, height: 50, position: 'bottom'}, // image description box settings
loading: {background: '#000000', opacity: 0.2, image: 'img/loading.gif'}, // loading box settings
buttons: {opacity: 1, prev: {className: 'SliderNamePrev', label: ''}, next: {className: 'SliderNameNext', label: ''}}, // Next/Prev buttons settings
navigation: {container: 'SliderNameNavigation', label: ' '} // navigation (pages) settings
}});

//20140728 给图片添加点击事件:提交表单
var isformed = 0;
function adsclick(adcount){
var vals = document.getElementsByTagName('a');
var appointedurl=new Array();
for (var k=0; k<vals.length; k++){
if (vals[k].getAttribute('attr')){
appointedurl[k] = vals[k].getAttribute('attr');
}
}
...

我们看到a标签有个点击函数adsclick(),为什么这里点了标签上的图片,函数执行不了呢?

相关的html头如下:
<meta http-equiv="imagetoolbar" content="no" />
<meta name="keywords" content="slideman, sliderman.js, javascript slider, jquery, slideshow, effects" />
<style type="text/css">
* { margin: 0; outline: none; }
body { background-color: #444444; }
.c { clear: both; }
#wrapper { margin: 0 auto; padding: 0 0 0 0; width: 100%; }
h2 { padding: 20px 0 10px 0; font-size: 24px; line-height: 40px; font-weight: normal; color: #adc276; text-shadow: 0 1px 3px #222222; }
</style>
<script type="text/javascript" src="/sf/sf_default/js/slidermanE1.js"></script>
<link rel="stylesheet" type="text/css" href="/sf/sf_default/css/sliderman.css" />
...全文
2621 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
mr_czl 2018-09-17
  • 打赏
  • 举报
回复
$(function(){
标签绑定的的方法不要写在这,否则调不到
})
$(document).ready(function() {
这个和上面的一样,上面的是简写。不要写在这里面。
})
写在script标签里就行。
zzzrrr1989 2014-09-30
  • 打赏
  • 举报
回复
引用 24 楼 apple8160 的回复:

function formaction(URL){
        // 当前广告链接
        var cururl=URL.replace(':','%3A');
        // 获得表单中的action部分
        var actionstr=$("form:first").attr("action");//没有获取到 自己检查 
        var strstart=actionstr.indexOf('url=');
        var strend=actionstr.length;
        // 截取action部分的url地址
        var oriurl=actionstr.substring(strstart+4,strend);
        actionstr=actionstr.replace(oriurl,cururl);
        // 替换表单action中的url
        $("form:first").attr("action",actionstr);
        // 提交表单
        $("form:first")[0].submit();
    }

----------------------------------------------------------------------------- var actionstr=$("form:first").attr("action");//没有获取到 自己检查 这是啥?
apple8160 2014-09-30
  • 打赏
  • 举报
回复

function formaction(URL){
        // 当前广告链接
        var cururl=URL.replace(':','%3A');
        // 获得表单中的action部分
        var actionstr=$("form:first").attr("action");//没有获取到 自己检查 
        var strstart=actionstr.indexOf('url=');
        var strend=actionstr.length;
        // 截取action部分的url地址
        var oriurl=actionstr.substring(strstart+4,strend);
        actionstr=actionstr.replace(oriurl,cururl);
        // 替换表单action中的url
        $("form:first").attr("action",actionstr);
        // 提交表单
        $("form:first")[0].submit();
    }

zzzrrr1989 2014-09-30
  • 打赏
  • 举报
回复
引用 22 楼 a270723114 的回复:
<a href="adsclick(0);" attr="http://www.baidu.com" target="_self" title="baidu"><img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="范宽.jpg"/></a> 把函数添加都href里面
-------------------------------------------------------------------------------------------------- 不行,这样的话点击会跳转到:原网页网址/adsclick(),而不是去执行adsclick这个函数。
zzzrrr1989 2014-09-30
  • 打赏
  • 举报
回复
引用 27 楼 apple8160 的回复:
[quote=引用 25 楼 zzzrrr1989 的回复:] [quote=引用 24 楼 apple8160 的回复:]

function formaction(URL){
        // 当前广告链接
        var cururl=URL.replace(':','%3A');
        // 获得表单中的action部分
        var actionstr=$("form:first").attr("action");//没有获取到 自己检查 
        var strstart=actionstr.indexOf('url=');
        var strend=actionstr.length;
        // 截取action部分的url地址
        var oriurl=actionstr.substring(strstart+4,strend);
        actionstr=actionstr.replace(oriurl,cururl);
        // 替换表单action中的url
        $("form:first").attr("action",actionstr);
        // 提交表单
        $("form:first")[0].submit();
    }

----------------------------------------------------------------------------- var actionstr=$("form:first").attr("action");//没有获取到 自己检查 这是啥?[/quote] 上面说错了 我从Firefox中看到 $("form:first").attr("action",actionstr); action的值没被替换[/quote] -------------------------------------------------------------------------------- 函数执行了?支持jQuery?
apple8160 2014-09-30
  • 打赏
  • 举报
回复
引用 25 楼 zzzrrr1989 的回复:
[quote=引用 24 楼 apple8160 的回复:]

function formaction(URL){
        // 当前广告链接
        var cururl=URL.replace(':','%3A');
        // 获得表单中的action部分
        var actionstr=$("form:first").attr("action");//没有获取到 自己检查 
        var strstart=actionstr.indexOf('url=');
        var strend=actionstr.length;
        // 截取action部分的url地址
        var oriurl=actionstr.substring(strstart+4,strend);
        actionstr=actionstr.replace(oriurl,cururl);
        // 替换表单action中的url
        $("form:first").attr("action",actionstr);
        // 提交表单
        $("form:first")[0].submit();
    }

----------------------------------------------------------------------------- var actionstr=$("form:first").attr("action");//没有获取到 自己检查 这是啥?[/quote] 上面说错了 我从Firefox中看到 $("form:first").attr("action",actionstr); action的值没被替换
apple8160 2014-09-30
  • 打赏
  • 举报
回复
引用 25 楼 zzzrrr1989 的回复:
[quote=引用 24 楼 apple8160 的回复:]

function formaction(URL){
        // 当前广告链接
        var cururl=URL.replace(':','%3A');
        // 获得表单中的action部分
        var actionstr=$("form:first").attr("action");//没有获取到 自己检查 
        var strstart=actionstr.indexOf('url=');
        var strend=actionstr.length;
        // 截取action部分的url地址
        var oriurl=actionstr.substring(strstart+4,strend);
        actionstr=actionstr.replace(oriurl,cururl);
        // 替换表单action中的url
        $("form:first").attr("action",actionstr);
        // 提交表单
        $("form:first")[0].submit();
    }

----------------------------------------------------------------------------- var actionstr=$("form:first").attr("action");//没有获取到 自己检查 这是啥?[/quote] actionstr这个值是空的 没有得到,下面不能执行 ,所以你的点击没有效果
笨鸟待展翅 2014-09-23
  • 打赏
  • 举报
回复
<a href="adsclick(0);" attr="http://www.baidu.com" target="_self" title="baidu"><img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="范宽.jpg"/></a> 把函数添加都href里面
zzzrrr1989 2014-09-23
  • 打赏
  • 举报
回复
引用 19 楼 KK3K2005 的回复:
[quote=引用 18 楼 zzzrrr1989 的回复:] [quote=引用 16 楼 KK3K2005 的回复:] <a onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" title="baidu">test</a> <script> var adsclick = function(n){ alert(n); } </scripe> 那问题 就出来了 你就只输出这么点吧 看看执行吗
------------------------------------------------------------------------------- 文本的test可以执行到函数,但是我把test改成<img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="Description from Image Title" />就不行了。[/quote] 来不及细看了 吧 onclick 直接 放到 img上 <img onclick="adsclick(0);。。。。[/quote] ------------------------------------------------------------------------------------------------------------------- <img onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="Description from Image Title" />
zzzrrr1989 2014-09-23
  • 打赏
  • 举报
回复
引用 19 楼 KK3K2005 的回复:
[quote=引用 18 楼 zzzrrr1989 的回复:] [quote=引用 16 楼 KK3K2005 的回复:] <a onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" title="baidu">test</a> <script> var adsclick = function(n){ alert(n); } </scripe> 那问题 就出来了 你就只输出这么点吧 看看执行吗
------------------------------------------------------------------------------- 文本的test可以执行到函数,但是我把test改成<img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="Description from Image Title" />就不行了。[/quote] 来不及细看了 吧 onclick 直接 放到 img上 <img onclick="adsclick(0);。。。。[/quote] --------------------------------------------------------------------------------------------------- 放在img标签上也不行。
KK3K2005 2014-09-22
  • 打赏
  • 举报
回复
引用 18 楼 zzzrrr1989 的回复:
[quote=引用 16 楼 KK3K2005 的回复:] <a onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" title="baidu">test</a> <script> var adsclick = function(n){ alert(n); } </scripe> 那问题 就出来了 你就只输出这么点吧 看看执行吗
------------------------------------------------------------------------------- 文本的test可以执行到函数,但是我把test改成<img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="Description from Image Title" />就不行了。[/quote] 来不及细看了 吧 onclick 直接 放到 img上 <img onclick="adsclick(0);。。。。
zzzrrr1989 2014-09-22
  • 打赏
  • 举报
回复
引用 16 楼 KK3K2005 的回复:
<a onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" title="baidu">test</a> <script> var adsclick = function(n){ alert(n); } </scripe> 你就只输出这么点吧 看看执行吗
------------------------------------------------------------------------------- 文本的test可以执行到函数,但是我把test改成<img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="Description from Image Title" />就不行了。
csucaicai 2014-09-22
  • 打赏
  • 举报
回复
关键是有没有弹出1和你的那个值。。。。
KK3K2005 2014-09-22
  • 打赏
  • 举报
回复
<a onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" title="baidu">test</a> <script> var adsclick = function(n){ alert(n); } </scripe> 你就只输出这么点吧 看看执行吗
zzzrrr1989 2014-09-22
  • 打赏
  • 举报
回复
引用 14 楼 csucaicai 的回复:
function adsclick(adcount){ alert(1); var vals = document.getElementsByTagName('a'); alert(vals); 你看看是否进入方法了,要是没进去,自求多福吧。。。。。。。。我就没看到a在哪里
----------------------------------------------------------------------------------------------------------------------------- a标签的那个a啊。
csucaicai 2014-09-22
  • 打赏
  • 举报
回复
function adsclick(adcount){ alert(1); var vals = document.getElementsByTagName('a'); alert(vals); 你看看是否进入方法了,要是没进去,自求多福吧。。。。。。。。我就没看到a在哪里
zzzrrr1989 2014-09-22
  • 打赏
  • 举报
回复
引用 8 楼 csucaicai 的回复:
js这东西就是不断的试,要不是很熟悉就一点一点加,从一个连接,弹一个1到慢慢的复杂点,总会发现问题的所在,我也不能给你调试,我只能大概的看一看,猜一猜,你做的多了,就手到擒来了
----------------------------------------------------------------------------------------------------------- 我把a标签跟adclick函数改到最简单还是不弹,应该是代码结构问题。
zzzrrr1989 2014-09-22
  • 打赏
  • 举报
回复
引用 10 楼 csucaicai 的回复:
还有你那些js和html不要混在一起,以后你写多了就会很乱,引入外部js或者写在head里边都不错的
----------------------------------------------------------------------------------------------------------------------------------- 标签在105行,函数在127行。 我代码确实不规范,不过新手只能做到这样了。
zzzrrr1989 2014-09-22
  • 打赏
  • 举报
回复


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="imagetoolbar" content="no" />
    <meta name="keywords" content="slideman, sliderman.js, javascript slider, jquery, slideshow, effects" />
    <style type="text/css">
		* { margin: 0; outline: none; }
		body { background-color: #444444; }
		.c { clear: both; }
		#wrapper { margin: 0 auto; padding: 0 0 0 0; width: 100%; }
		h2 { padding: 20px 0 10px 0; font-size: 24px; line-height: 40px; font-weight: normal; color: #adc276; text-shadow: 0 1px 3px #222222; }
	</style>
	<script type="text/javascript" src="/sf/sf_default/js/slidermanE1.js"></script>
	<link rel="stylesheet" type="text/css" href="/sf/sf_default/css/sliderman.css" />
    <meta content="width=device-width; initial-scale=1.0; minimum-scale=1.0; maximum-scale=1.0" name="viewport">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="title" content="未来网络创新研究院" />
<meta name="description" content="Authpuppy authentication server for wifidog wireless networks" />
    <title>未来网络创新研究院</title>
    <link rel="shortcut icon" href="/favicon.ico" />
        <link rel="stylesheet" type="text/css" media="screen" href="/css/blueprint/screen.css" />
<link rel="stylesheet" type="text/css" media="print" href="/css/blueprint/print.css" />
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css" />
<link rel="stylesheet" type="text/css" media="screen" href="/css/jQuery/themes/ui-lightness/jquery-ui-1.8.2.custom.css" />
            
       <script type="text/javascript" src="/js/authpuppy.js"></script>
<script type="text/javascript" src="/js/jQuery/jquery.min.js"></script>
<script type="text/javascript" src="/js/jQuery/jquery-ui-1.8.2.custom.min.js"></script>
<script type="text/javascript" src="/js/jQuery/jquery.jsonp.js"></script>
<script type="text/javascript" src="/js/menu.js"></script>
        <script type="text/javascript">
        $(document).ready(function() {
            var accessPath = /(^\/$|^\/login|^\/login\?)/g;
            var adTime = 15;
            // 20140812 新增广告时长变量
            if (accessPath.test(window.location.pathname)) {
                $("#menu").remove();
                $("input").hide();
                
                $("#page").removeClass("container");
                $("#page").addClass("containerdev");
                
                $("#header").removeClass("span-24");
                $("#header").addClass("span-100");
                
                $("#content").removeClass("span-19");
                $("#content").addClass("span-100");
                
                function autoLogin(){
                	if (isformed == 0){
                		$("form:first").submit();
                	}          
                }
                setTimeout(autoLogin, adTime*1000);
            }
        });
    </script>
    </head>
    <body>
	
    <div id="page" class="container ">
        <!--[if lt IE 7]> <div style=' clear: both; height: 59px; padding:0 0 0 15px; position: relative; text-align: center;'> <a href="http://www.microsoft.com/windows/internet-explorer/default.aspx?ocid=ie6_countdown_bannercode"><img src="http://www.theie6countdown.com/images/upgrade.jpg" border="0" height="42" width="820" alt="You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today." /></a></div> <![endif]-->
        <div id="header" class="span-24 last">
        	<!--         	<a href="http://www.fnic.cn/">
        	未来网络创新研究院        	</a>
        	 -->
        	
        	        </div>
<!-- 调整16至19 -->
        <div id="content" class="span-19">
                 
                        
<script type="text/javascript">
  var authenticators = new Array();
      authenticators.push('apDefaultAuthenticator');
  
  function selectAuthMethod(form) {
    for (var i = 0; i < authenticators.length; i++) {
      element = document.getElementById("authPlugin_" + authenticators[i]);
      if (authenticators[i] == form.value) {
        element.style.display = "block";
      } else {
        element.style.display = "none";
      }
    }
  }
</script>

<form action="http://192.168.28.154/login/?gw_address=192.168.1.1&gw_port=2060&gw_id=zhangrong&mac=98:6c:f5:55:f0:7e&url=http%3A//m.baidu.com/" method="POST">
    <input type="hidden" name="gw_id" value="zhangrong" />
  <input type="hidden" name="gw_address" value="192.168.1.1" />
  <input type="hidden" name="gw_port" value="2060" />
  
    	<input type="hidden" id="authenticators" name="authenticator" value="apDefaultAuthenticator"/>
  
      <div id="authPlugin_apDefaultAuthenticator" style="display: none">
            <!--<h1>广告页</h1>-->
      <table>
          
  <div id="wrapper">
  <div id="examples_outer">
  <div id="slider_container_1">
  <div id="SliderName">
  
  <a onclick="adsclick(0);" href="javascript:void(0);" attr="http://www.baidu.com" target="_self" title="baidu"><img src="http://192.168.28.154:8080/html/jsp/upload1/20140904/3761409792742425.jpg" title="范宽.jpg"/></a><div class="SliderNameDescription">溪山</div><a title="baidu" target="_self" onclick="adsclick(1);" href="javascript:void(0);" attr="http://www.baidu.com"><img src="http://192.168.28.154:8080/html/jsp/upload1/20140916/44891410859927955.jpg" title="Jellyfish.jpg"/></a><div class="SliderNameDescription">水母怎么说</div><a title="baidu" target="_self" onclick="adsclick(2);" href="javascript:void(0);" attr="http://www.baidu.com"><img src="http://192.168.28.154:8080/html/jsp/upload1/20140917/81091410922350044.jpg" title="Lighthouse.jpg"/></a><div class="SliderNameDescription">黎明之光</div>  
  </div> 
  <div class="c"></div>
  <div id="SliderNameNavigation"></div>
  <div class="c"></div>
  
  <script type="text/javascript">
  // we created new effect and called it 'demo01'. We use this name later.
  Sliderman.effect({name: 'demo01', cols: 10, rows: 5, delay: 10, fade: true, order: 'straight_stairs'});
  var demoSlider = Sliderman.slider({container: 'SliderName', width: document.documentElement.clientWidth, height: document.documentElement.clientHeight-60, effects: 'demo01',
  		display: {
  		pause: true, // slider pauses on mouseover
  		autoplay: 5000, // 5 seconds slideshow
  		always_show_loading: 200, // testing loading mode
  		description: {background: '#ffffff', opacity: 0.5, height: 50, position: 'bottom'}, // image description box settings
  		loading: {background: '#000000', opacity: 0.2, image: 'img/loading.gif'}, // loading box settings
  		buttons: {opacity: 1, prev: {className: 'SliderNamePrev', label: ''}, next: {className: 'SliderNameNext', label: ''}}, // Next/Prev buttons settings
  		navigation: {container: 'SliderNameNavigation', label: ' '} // navigation (pages) settings
  		}});

	//20140728 给图片添加点击事件:提交表单
	var isformed = 0;
	function adsclick(adcount){
		var vals = document.getElementsByTagName('a');
		var appointedurl=new Array();
		for (var k=0; k<vals.length; k++){
			if (vals[k].getAttribute('attr')){
				appointedurl[k] = vals[k].getAttribute('attr');
			}
		}
		// 20140811防止表单多次提交
		if ( isformed==0 ){
			formaction(appointedurl[adcount]);
			isformed = 1;
		}
		else{
			window.location.href=appointedurl[adcount];
			//alert("Do not submit it for the second time.");
		}
	}
	function formaction(URL){
		// 当前广告链接
		var cururl=URL.replace(':','%3A');
		// 获得表单中的action部分
		var actionstr=$("form:first").attr("action");
		var strstart=actionstr.indexOf('url=');
		var strend=actionstr.length;
		// 截取action部分的url地址
		var oriurl=actionstr.substring(strstart+4,strend);
		actionstr=actionstr.replace(oriurl,cururl);
		// 替换表单action中的url
		$("form:first").attr("action",actionstr);
		// 提交表单
		$("form:first")[0].submit();
	}
  </script>
  
  
  <div class="c"></div>
  </div>
  <div class="c"></div>
  </div>
  <div class="c"></div>
  </div>  
<input type="submit" value="Login" />
      </table>
    </div>
  
</form>

<script type="text/javascript">
  selectAuthMethod(document.getElementById("authenticators"));
</script>


        </div>
        
        <div id="menu" class="span-7 last">
            
<ul class="menu noaccordion">


<!-- <li class="expand"><a href="#">General</a> -->    
<li class="expand"><a href="#">基本功能</a>
    <ul class="acitem">
<!-- <li><a href="/node/index">Manage nodes</a></li> -->
<!-- <li><a href="/plugin/manage">Manage plugins</a></li>  -->
  <li><a href="/node/index">节点管理</a></li>
  <li><a href="/plugin/manage">插件管理</a></li> 
  
  
<!-- <li><a href="/guard/users">Users</a></li> -->
<!-- <li><a href="/configure">Server configuration</a></li> -->
  <li><a href="/guard/users">用户管理</a></li>
  <li><a href="/configure">服务设置</a></li>
 <!-- <li><a href="http://192.168.28.154:8080/html">Edit Ad</a></li> -->
  </ul><li>
<li class="expand"><a href="#">统计信息</a>
	<ul class="acitem">
  <li><a href="/statistics">详细记录</a></li>  </ul></li>
  <!-- <li><a href="/logoutdoctrine">Logout</a></li> -->
<li><a href="/logoutdoctrine">退出</a></li>
</ul>

<script type="text/javascript">
$("#main_menu > li").click(function(){
	$(this).next().slideToggle(300);
});

$('#main_menu > ul:eq(0)').show();
</script>

        </div>
    </div>
    </body>
</html>

csucaicai 2014-09-22
  • 打赏
  • 举报
回复
还有你那些js和html不要混在一起,以后你写多了就会很乱,引入外部js或者写在head里边都不错的
加载更多回复(9)

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧