【问题标题】:How to get the value of attribute instead of an [Object object] ? (JavaScript)如何获取属性的值而不是 [Object object] ? (JavaScript)
【发布时间】:2019-10-30 10:41:58
【问题描述】:

我总是得到[Object object],或者无论我多么努力都在制造冲突。 (我尝试了其他几个变体。);(

var $ = function(selector){

  var x; 
  var obj = {
  
    myLib(selector){
      return x || document.querySelectorAll(selector);
    },
    
    cl(selector){
      x = [x[0].closest(selector)];
      return this;
    },    
      
    attr(s,v){
      s&&v ? x.forEach(y=>{y.setAttribute(s,v);})
           : x = [x[0].getAttribute(s)]; x.value; // what is wrong here ?
      return this;
    },
      
  };
        
  x = obj.myLib(selector);
  return obj;
  
};

var wtf = $('.kilo').cl('.uniform').attr('data-wrestler');

console.log('WTF: '+wtf);
console.log('WTF: '+JSON.stringify(wtf));
<div id="foxtrott">
  foxtrott
  <div class="uniform" data-wrestler="hulkster">
    uniform
    <div class="charlie">
      charlie
      <div class="kilo">
        kilo
      </div>
    </div>
  </div>
</div>

如果您也有有用的链接来阅读有关此主题的内容,那就太好了。

提前谢谢各位!!!

【问题讨论】:

  • 你是如何使用这个的?不清楚。
  • 是的,对不起!我会在一分钟内更新我的问题
  • 你为什么有x.value;?这是一个单独的语句,所以你最好单独写一行。
  • 因为x = [x[0].getAttribute(s)].value; 不起作用

标签: javascript object selectors-api getattribute


【解决方案1】:

您应该在 attr 方法中返回 x 而不是 this

var $ = function(selector){

  var x; 
  var obj = {
  
    myLib(selector){
      return x || document.querySelectorAll(selector);
    },
    
    cl(selector){
      x = [x[0].closest(selector)];
      return this;
    },    
      
    attr(s,v){
      s&&v ? x.forEach(y=>{y.setAttribute(s,v);})
           : x = [x[0].getAttribute(s)]; 
      return x;
    },
      
  };
        
  x = obj.myLib(selector);
  return obj;
  
};

var wtf = $('.kilo').cl('.uniform').attr('data-wrestler');

console.log('WTF: '+wtf);
console.log('WTF: '+JSON.stringify(wtf));
<div id="foxtrott">
  foxtrott
  <div class="uniform" data-wrestler="hulkster">
    uniform
    <div class="charlie">
      charlie
      <div class="kilo">
        kilo
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 那么你会在attr 设置中松开链接。使其仅在获取字符串时返回,否则返回。
猜你喜欢
  • 2021-04-15
  • 2018-02-15
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2013-04-03
  • 2014-09-13
  • 2018-05-24
相关资源
最近更新 更多